From c37211571e6c3762294278cc1c7b0275f713425e Mon Sep 17 00:00:00 2001 From: Randy Heit <> Date: Wed, 5 May 1999 00:00:00 +0000 Subject: [PATCH] ZDoom 1.17c. --- COPYING | 340 --- PATCH.EXE | Bin 107008 -> 0 bytes code/D_dehack.c | 3 + code/D_main.c | 5 + code/F_wipe.c | 8 +- code/G_level.c | 39 + code/G_level.h | 5 + code/M_random.c | 10 +- code/P_lnspec.c | 30 +- code/P_saveg.c | 10 +- code/P_setup.c | 9 +- code/R_bsp.c | 56 +- code/R_defs.h | 3 +- code/R_draw.c | 16 +- code/R_main.c | 7 +- code/R_segs.c | 8 +- code/R_things.c | 21 +- code/V_video.c | 23 +- code/V_video.h | 4 +- code/djgpp/I_sound.c | 1 + code/doominfo.lmp | 3136 ------------------- code/hexninfo.lmp | 6963 ------------------------------------------ code/p_acs.c | 5 +- code/r_drawt.c | 56 +- code/ticinfo.lmp | 3173 ------------------- code/v_draw.c | 20 +- code/win32/I_music.c | 11 +- code/win32/I_sound.c | 1 + code/win32/zdoom.rc | 8 +- ptc.diff | 3322 -------------------- readme.txt | 29 +- 31 files changed, 243 insertions(+), 17079 deletions(-) delete mode 100644 COPYING delete mode 100644 PATCH.EXE delete mode 100644 code/doominfo.lmp delete mode 100644 code/hexninfo.lmp delete mode 100644 code/ticinfo.lmp delete mode 100644 ptc.diff diff --git a/COPYING b/COPYING deleted file mode 100644 index 60549be514..0000000000 --- a/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/PATCH.EXE b/PATCH.EXE deleted file mode 100644 index d992ee0fc6ce3cf06896246075d61b4a5a1f2fa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107008 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 js? #endif +#include + #include "m_alloc.h" +#include "m_random.h" #include "minilzo.h" #include "doomdef.h" #include "doomstat.h" @@ -1039,6 +1042,8 @@ void D_DoomMain (void) int p, flags; char file[256]; + rngseed = (unsigned long)time (NULL); + gamestate = GS_STARTUP; M_FindResponseFile (); DoLooseFiles(); // Ty 08/29/98 - handle "loose" files on command line diff --git a/code/F_wipe.c b/code/F_wipe.c index fef8b65745..5e9b7b5d5d 100644 --- a/code/F_wipe.c +++ b/code/F_wipe.c @@ -301,8 +301,8 @@ int wipe_doBurn (int ticks) unsigned int *bg2rgb = Col2RGB8[bglevel]; unsigned int fg = fg2rgb[fromnew[x]]; unsigned int bg = bg2rgb[fromold[x]]; - fg = (fg+bg) | 0xf07c3e1f; - to[x] = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + to[x] = RGB32k[0][0][fg & (fg>>15)]; done = false; } } @@ -355,8 +355,8 @@ int wipe_doFade (int ticks) { unsigned int fg = fg2rgb[fromnew[x]]; unsigned int bg = bg2rgb[fromold[x]]; - fg = (fg+bg) | 0xf07c3e1f; - to[x] = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + to[x] = RGB32k[0][0][fg & (fg>>15)]; } fromnew += screen.width; fromold += screen.width; diff --git a/code/G_level.c b/code/G_level.c index e2fdf6a7dc..99ae572690 100644 --- a/code/G_level.c +++ b/code/G_level.c @@ -351,6 +351,26 @@ void G_ParseMapInfo (void) mapinfo = data; levelflags |= LEVEL_FORCENOSKYSTRETCH; + } else if (!stricmp (com_token, "allowfreelook")) { + mapinfo = data; + levelflags &= ~LEVEL_FREELOOK_NO; + levelflags |= LEVEL_FREELOOK_YES; + + } else if (!stricmp (com_token, "nofreelook")) { + mapinfo = data; + levelflags &= ~LEVEL_FREELOOK_YES; + levelflags |= LEVEL_FREELOOK_NO; + + } else if (!stricmp (com_token, "allowjump")) { + mapinfo = data; + levelflags &= ~LEVEL_JUMP_NO; + levelflags |= LEVEL_JUMP_YES; + + } else if (!stricmp (com_token, "nojump")) { + mapinfo = data; + levelflags &= ~LEVEL_JUMP_YES; + levelflags |= LEVEL_JUMP_NO; + } else if (!stricmp (com_token, "cdtrack") || !stricmp (com_token, "cd_start_track") || !stricmp (com_token, "cd_end1_track") || @@ -938,6 +958,25 @@ void G_InitLevelLocals () level.levelnum = 1; } + { + int clear = 0, set = 0; + char buf[16]; + + if (level.flags & LEVEL_JUMP_YES) + clear = DF_NO_JUMP; + if (level.flags & LEVEL_JUMP_NO) + set = DF_NO_JUMP; + if (level.flags & LEVEL_FREELOOK_YES) + clear |= DF_NO_FREELOOK; + if (level.flags & LEVEL_FREELOOK_NO) + set |= DF_NO_FREELOOK; + + dmflags &= ~clear; + dmflags |= set; + sprintf (buf, "%d", dmflags); + cvar_set ("dmflags", buf); + } + memset (level.vars, 0, sizeof(level.vars)); if (oldfade != level.fadeto) diff --git a/code/G_level.h b/code/G_level.h index 8c41330115..66fcf1291e 100644 --- a/code/G_level.h +++ b/code/G_level.h @@ -26,6 +26,11 @@ #define LEVEL_SNDSEQTOTALCTRL 0x00001000 #define LEVEL_FORCENOSKYSTRETCH 0x00002000 +#define LEVEL_JUMP_NO 0x00004000 +#define LEVEL_JUMP_YES 0x00008000 +#define LEVEL_FREELOOK_NO 0x00010000 +#define LEVEL_FREELOOK_YES 0x00020000 + #define LEVEL_DEFINEDINMAPINFO 0x20000000 // Level was defined in a MAPINFO lump #define LEVEL_CHANGEMAPCHEAT 0x40000000 // Don't display cluster messages #define LEVEL_VISITED 0x80000000 // Used for intermission map diff --git a/code/M_random.c b/code/M_random.c index 42ae5d5cd1..2d0de5f8b4 100644 --- a/code/M_random.c +++ b/code/M_random.c @@ -95,11 +95,11 @@ int P_Random(pr_class_t pr_class) void M_ClearRandom (void) { - int i; - unsigned long seed = rngseed*2+1; // add 3/26/98: add rngseed - for (i=0; i= 0) - sectors[secnum].colormap = GetSpecialLights (arg1, arg2, arg3, - RPART(sectors[secnum].colormap->fade), - GPART(sectors[secnum].colormap->fade), - BPART(sectors[secnum].colormap->fade)); + { + sectors[secnum].floorcolormap = GetSpecialLights (arg1, arg2, arg3, + RPART(sectors[secnum].floorcolormap->fade), + GPART(sectors[secnum].floorcolormap->fade), + BPART(sectors[secnum].floorcolormap->fade)); + sectors[secnum].ceilingcolormap = GetSpecialLights (arg1, arg2, arg3, + RPART(sectors[secnum].ceilingcolormap->fade), + GPART(sectors[secnum].ceilingcolormap->fade), + BPART(sectors[secnum].ceilingcolormap->fade)); + } return true; } @@ -1123,12 +1129,18 @@ FUNC(LS_Sector_SetFade) int secnum = -1; while ((secnum = P_FindSectorFromTag (arg0, secnum)) >= 0) - sectors[secnum].colormap = GetSpecialLights ( - RPART(sectors[secnum].colormap->color), - GPART(sectors[secnum].colormap->color), - BPART(sectors[secnum].colormap->color), + { + sectors[secnum].floorcolormap = GetSpecialLights ( + RPART(sectors[secnum].floorcolormap->color), + GPART(sectors[secnum].floorcolormap->color), + BPART(sectors[secnum].floorcolormap->color), arg1, arg2, arg3); - + sectors[secnum].ceilingcolormap = GetSpecialLights ( + RPART(sectors[secnum].ceilingcolormap->color), + GPART(sectors[secnum].ceilingcolormap->color), + BPART(sectors[secnum].ceilingcolormap->color), + arg1, arg2, arg3); + } return true; } diff --git a/code/P_saveg.c b/code/P_saveg.c index 9dd68114fa..91982ebe85 100644 --- a/code/P_saveg.c +++ b/code/P_saveg.c @@ -157,8 +157,9 @@ void P_ArchiveWorld (void) save_p = (byte *)(put + 10); // [RH] PADSAVEP(); // [RH] *((float *)save_p)++ = sec->gravity; // [RH] - *((unsigned int *)save_p)++ = sec->colormap->color; // [RH] - *((unsigned int *)save_p)++ = sec->colormap->fade; // [RH]; + *((unsigned int *)save_p)++ = sec->floorcolormap->color; // [RH] + *((unsigned int *)save_p)++ = sec->floorcolormap->fade; // [RH]; + /****** BE SURE AND ADD ceilingcolormap for 1.18 *******/ } put = (short *)save_p; // [RH] @@ -228,7 +229,7 @@ void P_UnArchiveWorld (void) color = *((unsigned int *)save_p)++; // [RH] fade = *((unsigned int *)save_p)++; // [RH] - sec->colormap = GetSpecialLights ( + sec->floorcolormap = sec->ceilingcolormap = GetSpecialLights ( RPART(color), GPART(color), BPART(color), RPART(fade), GPART(fade), BPART(fade)); // [RH] @@ -878,7 +879,8 @@ void P_ArchiveSpecials (void) pusher = (pusher_t *)save_p; memcpy (save_p, th, sizeof(*pusher)); save_p += sizeof(*pusher); - pusher->source = (mobj_t *) pusher->source->thinker.prev; // [RH] remember source + pusher->source = pusher->source ? // [RH] remember source + (mobj_t *) pusher->source->thinker.prev : NULL; continue; } else if (th->function.acp1 == (actionf_p1) T_RotatePoly) diff --git a/code/P_setup.c b/code/P_setup.c index ba79f739dd..4e3a788f5a 100644 --- a/code/P_setup.c +++ b/code/P_setup.c @@ -49,6 +49,7 @@ extern void P_TranslateLineDef (line_t *ld, maplinedef_t *mld); extern void P_TranslateTeleportThings (void); extern int P_TranslateSectorSpecial (int); +extern unsigned int R_OldBlend; // // MAP related Lookup tables. @@ -363,10 +364,10 @@ void P_LoadSectors (int lump) // [RH] Sectors default to white light with the default fade. // If they are outside (have a sky ceiling), they use the outside fog. if (level.outsidefog != 0xff000000 && ss->ceilingpic == skyflatnum) - ss->colormap = GetSpecialLights (255,255,255, + ss->ceilingcolormap = ss->floorcolormap = GetSpecialLights (255,255,255, RPART(level.outsidefog),GPART(level.outsidefog),BPART(level.outsidefog)); else - ss->colormap = GetSpecialLights (255,255,255, + ss->ceilingcolormap = ss->floorcolormap = GetSpecialLights (255,255,255, RPART(level.fadeto),GPART(level.fadeto),BPART(level.fadeto)); ss->sky = 0; @@ -760,7 +761,8 @@ void P_LoadSideDefs2 (int lump) for (s = 0; s < numsectors; s++) { if (sectors[s].tag == sd->tag) - sectors[s].colormap = colormap; + sectors[s].ceilingcolormap = + sectors[s].floorcolormap = colormap; } } } @@ -1409,6 +1411,7 @@ void P_SetupLevel (char *lumpname, int position) // build subsector connect matrix // UNUSED P_ConnectSubsectors (); + R_OldBlend = ~0; // preload graphics if (precache) R_PrecacheLevel (); diff --git a/code/R_bsp.c b/code/R_bsp.c index 853c9448a7..5e3d0251e8 100644 --- a/code/R_bsp.c +++ b/code/R_bsp.c @@ -318,13 +318,17 @@ sector_t *R_FakeFlat(sector_t *sec, sector_t *tempsec, if ((underwater && (tempsec-> floorheight = sec->floorheight, tempsec->ceilingheight = s->floorheight-1, - !back)) || viewz <= s->floorheight) + back)) || viewz <= s->floorheight) { // head-below-floor hack tempsec->floorpic = s->floorpic; tempsec->floor_xoffs = s->floor_xoffs; tempsec->floor_yoffs = s->floor_yoffs; + tempsec->floorcolormap = s->floorcolormap; - if (underwater) { + if (underwater) + { + tempsec->ceilingheight = s->floorheight - 1; + tempsec->ceilingcolormap = s->ceilingcolormap; if (s->ceilingpic == skyflatnum) { tempsec->floorheight = tempsec->ceilingheight+1; @@ -339,6 +343,10 @@ sector_t *R_FakeFlat(sector_t *sec, sector_t *tempsec, tempsec->ceiling_yoffs = s->ceiling_yoffs; } } + else + { + tempsec->floorheight = sec->floorheight; + } tempsec->lightlevel = s->lightlevel; @@ -444,8 +452,7 @@ void R_AddLine (seg_t *line) angle2 = (unsigned) (-(int)clipangle); } - // The seg is in the view range, - // but not necessarily visible. + // The seg is in the view range, but not necessarily visible. angle1 = (angle1+ANG90)>>ANGLETOFINESHIFT; angle2 = (angle2+ANG90)>>ANGLETOFINESHIFT; @@ -504,7 +511,8 @@ void R_AddLine (seg_t *line) && backsector->ceilinglightsec == frontsector->ceilinglightsec // [RH] Also consider colormaps - && backsector->colormap == frontsector->colormap + && backsector->floorcolormap == frontsector->floorcolormap + && backsector->ceilingcolormap == frontsector->ceilingcolormap ) { return; @@ -676,12 +684,27 @@ void R_Subsector (int num) count = sub->numlines; line = &segs[sub->firstline]; - basecolormap = frontsector->colormap->maps; // [RH] set basecolormap - // killough 3/8/98, 4/4/98: Deep water / fake ceiling effect frontsector = R_FakeFlat(frontsector, &tempsec, &floorlightlevel, &ceilinglightlevel, false); // killough 4/11/98 + basecolormap = frontsector->ceilingcolormap->maps; + + ceilingplane = frontsector->ceilingheight > viewz || + frontsector->ceilingpic == skyflatnum || + (frontsector->heightsec != -1 && + sectors[frontsector->heightsec].floorpic == skyflatnum) ? + R_FindPlane(frontsector->ceilingheight, // killough 3/8/98 + frontsector->ceilingpic == skyflatnum && // killough 10/98 + frontsector->sky & PL_SKYFLAT ? frontsector->sky : + frontsector->ceilingpic, + ceilinglightlevel, // killough 4/11/98 + frontsector->ceiling_xoffs, // killough 3/7/98 + frontsector->ceiling_yoffs + ) : NULL; + + basecolormap = frontsector->floorcolormap->maps; // [RH] set basecolormap + // killough 3/7/98: Add (x,y) offsets to flats, add deep water check // killough 3/16/98: add floorlightlevel // killough 10/98: add support for skies transferred from sidedefs @@ -689,7 +712,7 @@ void R_Subsector (int num) (frontsector->heightsec != -1 && sectors[frontsector->heightsec].ceilingpic == skyflatnum) ? R_FindPlane(frontsector->floorheight, - frontsector->floorpic == skyflatnum && // kilough 10/98 + frontsector->floorpic == skyflatnum && // killough 10/98 frontsector->sky & PL_SKYFLAT ? frontsector->sky : frontsector->floorpic, floorlightlevel, // killough 3/16/98 @@ -697,21 +720,9 @@ void R_Subsector (int num) frontsector->floor_yoffs ) : NULL; - ceilingplane = frontsector->ceilingheight > viewz || - frontsector->ceilingpic == skyflatnum || - (frontsector->heightsec != -1 && - sectors[frontsector->heightsec].floorpic == skyflatnum) ? - R_FindPlane(frontsector->ceilingheight, // killough 3/8/98 - frontsector->ceilingpic == skyflatnum && // kilough 10/98 - frontsector->sky & PL_SKYFLAT ? frontsector->sky : - frontsector->ceilingpic, - ceilinglightlevel, // killough 4/11/98 - frontsector->ceiling_xoffs, // killough 3/7/98 - frontsector->ceiling_yoffs - ) : NULL; - // [RH] set foggy flag - foggy = (level.fadeto || sub->sector->colormap->fade); + foggy = level.fadeto || frontsector->floorcolormap->fade + || frontsector->ceilingcolormap->fade; // killough 9/18/98: Fix underwater slowdown, by passing real sector // instead of fake one. Improve sprite lighting by basing sprite @@ -757,7 +768,6 @@ void R_RenderBSPNode (int bspnum) R_RenderBSPNode(bsp->children[side]); // Possibly divide back space. - if (!R_CheckBBox(bsp->bbox[side^1])) return; diff --git a/code/R_defs.h b/code/R_defs.h index 09ea8a907d..feca4a7652 100644 --- a/code/R_defs.h +++ b/code/R_defs.h @@ -156,7 +156,8 @@ struct sector_s float gravity; // [RH] Sector gravity (1.0 is normal) short damage; // [RH] Damage to do while standing on floor short mod; // [RH] Means-of-death for applied damage - struct dyncolormap_s *colormap; // [RH] Per-sector colormap + struct dyncolormap_s *floorcolormap; // [RH] Per-sector colormap + struct dyncolormap_s *ceilingcolormap; }; typedef struct sector_s sector_t; diff --git a/code/R_draw.c b/code/R_draw.c index 6cd491ccc4..6484cbb86c 100644 --- a/code/R_draw.c +++ b/code/R_draw.c @@ -376,7 +376,13 @@ void R_DrawFuzzColumnP_C (void) fixed_t dc_translevel; /* -[RH] This note is from DOSDoom 0.65: +[RH] This translucency algorithm is based on DOSDoom 0.65's, but uses +a 32k RGB table instead of an 8k one. At least on my machine, it's +slightly faster (probably because it uses only one shift instead of +two), and it looks considerably less green at the ends of the +translucency range. The extra size doesn't appear to be an issue. + +The following note is from DOSDoom 0.65: New translucency algorithm, by Erik Sandberg: @@ -461,8 +467,8 @@ void R_DrawTranslucentColumnP_C (void) fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - *dest = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + *dest = RGB32k[0][0][fg & (fg>>15)]; dest += pitch; frac += fracstep; } while (--count); @@ -580,8 +586,8 @@ void R_DrawTlatedLucentColumnP_C (void) fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - *dest = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + *dest = RGB32k[0][0][fg & (fg>>15)]; dest += pitch; frac += fracstep; } while (--count); diff --git a/code/R_main.c b/code/R_main.c index 8a7691ce70..25a39e71b6 100644 --- a/code/R_main.c +++ b/code/R_main.c @@ -874,10 +874,10 @@ subsector_t *R_PointInSubsector (fixed_t x, fixed_t y) // R_SetupFrame // extern dyncolormap_t NormalLight; +unsigned int R_OldBlend = ~0; void R_SetupFrame (player_t *player) { - static unsigned int oldblend = ~0; unsigned int newblend; int dy; @@ -930,8 +930,8 @@ void R_SetupFrame (player_t *player) // [RH] Don't override testblend unless entering a sector with a // blend different from the previous sector's. Same goes with // NormalLight's maps pointer. - if (oldblend != newblend) { - oldblend = newblend; + if (R_OldBlend != newblend) { + R_OldBlend = newblend; if (APART(newblend)) { BaseBlendR = RPART(newblend); BaseBlendG = GPART(newblend); @@ -1092,4 +1092,5 @@ void R_MultiresInit (void) R_InitFuzzTable (); R_PlaneInitData (); + R_OldBlend = ~0; } \ No newline at end of file diff --git a/code/R_segs.c b/code/R_segs.c index 81b79e6912..df6537b8d9 100644 --- a/code/R_segs.c +++ b/code/R_segs.c @@ -188,7 +188,7 @@ void R_RenderMaskedSegRange (drawseg_t *ds, int x1, int x2) texnum = texturetranslation[curline->sidedef->midtexture]; - basecolormap = frontsector->colormap->maps; // [RH] Set basecolormap + basecolormap = frontsector->floorcolormap->maps; // [RH] Set basecolormap // killough 4/13/98: get correct lightlevel for 2s normal textures lightnum = (R_FakeFlat(frontsector, &tempsec, NULL, NULL, false) @@ -839,7 +839,8 @@ void R_StoreWallRange (int start, int stop) || backsector->floorlightsec != frontsector->floorlightsec // [RH] Add checks for colormaps - || backsector->colormap != frontsector->colormap + || backsector->floorcolormap != frontsector->floorcolormap + || backsector->ceilingcolormap != frontsector->ceilingcolormap ; markceiling = worldhigh != worldtop @@ -859,7 +860,8 @@ void R_StoreWallRange (int start, int stop) || backsector->ceilinglightsec != frontsector->ceilinglightsec // [RH] Add check for colormaps - || backsector->colormap != frontsector->colormap + || backsector->floorcolormap != frontsector->floorcolormap + || backsector->ceilingcolormap != frontsector->ceilingcolormap ; } diff --git a/code/R_things.c b/code/R_things.c index aa089b3b21..4874d23b82 100644 --- a/code/R_things.c +++ b/code/R_things.c @@ -969,7 +969,6 @@ void R_ProjectSprite (mobj_t *thing) if (heightsec != -1) // only clip things which are in special sectors { int phs = camera->subsector->sector->heightsec; - if (phs != -1 && viewz < sectors[phs].floorheight ? thing->z >= sectors[heightsec].floorheight : gzt < sectors[heightsec].floorheight) @@ -1199,20 +1198,26 @@ void R_DrawPlayerSprites (void) int i; int lightnum; pspdef_t* psp; + sector_t* sec; + static sector_t tempsec; + int floorlight, ceilinglight; if (!r_drawplayersprites->value || !camera->player || (camera->player->cheats & CF_CHASECAM)) return; + sec = R_FakeFlat (camera->subsector->sector, &tempsec, &floorlight, + &ceilinglight, false); + // [RH] set foggy flag - foggy = (level.fadeto || camera->subsector->sector->colormap->fade); + foggy = (level.fadeto || sec->floorcolormap->fade); // [RH] set basecolormap - basecolormap = camera->subsector->sector->colormap->maps; + basecolormap = sec->floorcolormap->maps; // get light level - lightnum = (camera->subsector->sector->lightlevel >> LIGHTSEGSHIFT) + lightnum = ((floorlight + ceilinglight) >> (LIGHTSEGSHIFT+1)) + (foggy ? 0 : extralight); if (lightnum < 0) @@ -1692,7 +1697,7 @@ void R_ProjectParticle (particle_t *particle) vis->mobjflags = particle->trans; if (fixedlightlev) { - vis->colormap = sector->colormap->maps + fixedlightlev; + vis->colormap = sector->floorcolormap->maps + fixedlightlev; } else if (fixedcolormap) { vis->colormap = fixedcolormap; } else if (sector) { @@ -1707,7 +1712,7 @@ void R_ProjectParticle (particle_t *particle) if (index >= MAXLIGHTSCALE) index = MAXLIGHTSCALE-1; - vis->colormap = scalelight[lightnum][index] + sector->colormap->maps; + vis->colormap = scalelight[lightnum][index] + sector->floorcolormap->maps; } else { vis->colormap = realcolormaps; } @@ -1775,8 +1780,8 @@ void R_DrawParticle (vissprite_t *vis, int x1, int x2) do { unsigned int bg = bg2rgb[*dest]; - bg = (fg+bg) | 0xf07c3e1f; - *dest = RGB8k[0][0][(bg>>5) & (bg>>19)]; + bg = (fg+bg) | 0x1f07c1f; + *dest = RGB32k[0][0][bg & (bg>>15)]; dest += colsize; } while (--count); dest += spacing; diff --git a/code/V_video.c b/code/V_video.c index e70eaac210..2e4a0557d5 100644 --- a/code/V_video.c +++ b/code/V_video.c @@ -67,7 +67,7 @@ extern char *IdStrings[22]; extern int DisplayID; unsigned int Col2RGB8[65][256]; -byte RGB8k[16][32][16]; +byte RGB32k[32][32][32]; // [RH] The framebuffer is no longer a mere byte array. @@ -232,8 +232,8 @@ void V_DimScreen (screen_t *screen) for (y = 0; y < screen->height; y++) { for (x = 0; x < screen->width; x++) { unsigned int bg = bg2rgb[*spot]; - bg = (fg+bg) | 0xf07c3e1f; - *spot++ = RGB8k[0][0][(bg>>5) & (bg>>19)]; + bg = (fg+bg) | 0x1f07c1f; + *spot++ = RGB32k[0][0][bg&(bg>>15)]; } spot += gap; } @@ -407,19 +407,18 @@ void Cmd_SetColor (void *plyr, int argc, char **argv) } } -// This is DOSDoom 0.65's translucency table code, cleaned up. -// I also removed the use of Allegro's RGB table code, because -// it just wasn't accurate enough. +// Build the tables necessary for translucency void BuildTransTable (unsigned int *palette) { { int r, g, b; // create the small RGB table - for (r = 0; r < 16; r++) + for (r = 0; r < 32; r++) for (g = 0; g < 32; g++) - for (b = 0; b < 16; b++) - RGB8k[r][g][b] = BestColor (palette, r * 16, g * 8, b * 16, 256); + for (b = 0; b < 32; b++) + RGB32k[r][g][b] = BestColor (palette, + (r<<3)|(r>>2), (g<<3)|(g>>2), (b<<3)|(b>>2), 256); } { @@ -427,9 +426,9 @@ void BuildTransTable (unsigned int *palette) for (x = 0; x < 65; x++) for (y = 0; y < 256; y++) - Col2RGB8[x][y] = (((RPART(palette[y])*x)>>5)<<9) | - (((GPART(palette[y])*x)>>4)<<18) | - ((BPART(palette[y])*x)>>5); + Col2RGB8[x][y] = (((RPART(palette[y])*x)>>4)<<20) | + ((GPART(palette[y])*x)>>4) | + (((BPART(palette[y])*x)>>4)<<10); } } diff --git a/code/V_video.h b/code/V_video.h index df8d956cca..aa420610fb 100644 --- a/code/V_video.h +++ b/code/V_video.h @@ -70,9 +70,9 @@ extern int dirtybox[4]; extern byte newgamma[256]; extern cvar_t *gammalevel; -// DOSDoom 0.65's neat-o translucency tables +// translucency tables extern unsigned int Col2RGB8[65][256]; -extern byte RGB8k[16][32][16]; +extern byte RGB32k[32][32][32]; extern int CleanWidth, CleanHeight, CleanXfac, CleanYfac; diff --git a/code/djgpp/I_sound.c b/code/djgpp/I_sound.c index bcb8afa4c5..95bc778d02 100644 --- a/code/djgpp/I_sound.c +++ b/code/djgpp/I_sound.c @@ -555,6 +555,7 @@ void I_InitSound (void) (DLGPROC)InitBoxCallback)) { case IDC_NOSOUND: MIDASsetOption (MIDAS_OPTION_FORCE_NO_SOUND, TRUE); + nosound = true; break; case IDQUIT: diff --git a/code/doominfo.lmp b/code/doominfo.lmp deleted file mode 100644 index aec6061cdb..0000000000 --- a/code/doominfo.lmp +++ /dev/null @@ -1,3136 +0,0 @@ -// This file describes the state definitions and info declarations used for -// all incarnations of the games DOOM and DOOM 2. The format of this file is -// based on the format used by the original infogen with modifications to -// suit the way things are done internally by ZDoom. -// -// Much of this file comes unmodified from the multigen.txt file, which is -// included with the DOOM Utilities package available for download from -// DOSDoom's homepage (http://frag.com/dosdoom). -// -// Original header follows: -// -//============================================================================ -// If the first two characters of a line are S_, it is a state definition -// line. Otherwise, it is part of an info declaration. -// -//============================================================================ -// state data is: -// -// statename sprite frame tics action nextstate [optional1] [optional2] -// a * after the frame letter causes full bright -// -//============================================================================ -// An info definition is: -// -// $ MOBJNAME -// field data -// -// if MOBJNAME is +, a new unique name will be generated -// if fieldname starts with str_, it will be made a char * instead of an int -//============================================================================ - -multigen -{ -// -// info default MUST be first in file -// - -$ DEFAULT -doomednum -1 //number to spawn this object -spawnstate S_NULL // -spawnhealth 1000 // -seestate S_NULL //when player sighted or enemy shot -seesound "" //also launch sound for missiles -reactiontime 8 //wait time before attacking -attacksound "" // -painstate S_NULL // -painchance 0 //out of 256 -painsound "" // -meleestate S_NULL // -missilestate S_NULL // -crashstate S_NULL // -deathstate S_NULL //also explodestate for missiles -xdeathstate S_NULL //when knocked to -spawnhelath or lower -deathsound "" //also explosion sound for missiles -speed 0 // -radius 20 // -height 16 // -mass 100 // -damage 0 //missile damage in d8s -activesound "" // -flags 0 // -flags2 0 //Heretic/Hexen flags -raisestate S_NULL //vile resurection state -translucency 1 //0=invisible, 1=opaque -item NULL //inventory item, implies pickup-able - - -// when a state cycles to S_NULL, the actor will be removed - -S_NULL TROO A -1 NULL S_NULL - -// -// map spots -// - -$ MT_MAPSPOT -doomednum 9001 -spawnstate S_MAPSPOT -flags MF_NOBLOCKMAP|MF_NOSECTOR|MF_NOGRAVITY - -$ MT_MAPSPOTGRAVITY -doomednum 9013 -spawnstate S_MAPSPOT -flags2 MF2_DONTDRAW - -S_MAPSPOT TNT1 A -1 NULL S_NULL - - - -//============================================================================ -// player sprites -//============================================================================ - -// all flashes go to S_LIGHTDONE to reset the light then remove self -S_LIGHTDONE SHTG E 0 A_Light0 S_NULL - - -// -// fist -// -S_PUNCH PUNG A 1 A_WeaponReady S_PUNCH -S_PUNCHDOWN PUNG A 1 A_Lower S_PUNCHDOWN -S_PUNCHUP PUNG A 1 A_Raise S_PUNCHUP - -S_PUNCH1 PUNG B 4 NULL S_PUNCH2 -S_PUNCH2 PUNG C 4 A_Punch S_PUNCH3 -S_PUNCH3 PUNG D 5 NULL S_PUNCH4 -S_PUNCH4 PUNG C 4 NULL S_PUNCH5 -S_PUNCH5 PUNG B 5 A_ReFire S_PUNCH - - -// -// pistol -// -S_PISTOL PISG A 1 A_WeaponReady S_PISTOL -S_PISTOLDOWN PISG A 1 A_Lower S_PISTOLDOWN -S_PISTOLUP PISG A 1 A_Raise S_PISTOLUP -S_PISTOL1 PISG A 4 NULL S_PISTOL2 -S_PISTOL2 PISG B 6 A_FirePistol S_PISTOL3 -S_PISTOL3 PISG C 4 NULL S_PISTOL4 -S_PISTOL4 PISG B 5 A_ReFire S_PISTOL - -S_PISTOLFLASH PISF A* 7 A_Light1 S_LIGHTDONE - - -// -// shotgun -// -S_SGUN SHTG A 1 A_WeaponReady S_SGUN -S_SGUNDOWN SHTG A 1 A_Lower S_SGUNDOWN -S_SGUNUP SHTG A 1 A_Raise S_SGUNUP - -S_SGUN1 SHTG A 3 NULL S_SGUN2 -S_SGUN2 SHTG A 7 A_FireShotgun S_SGUN3 -S_SGUN3 SHTG B 5 NULL S_SGUN4 -S_SGUN4 SHTG C 5 NULL S_SGUN5 -S_SGUN5 SHTG D 4 NULL S_SGUN6 -S_SGUN6 SHTG C 5 NULL S_SGUN7 -S_SGUN7 SHTG B 5 NULL S_SGUN8 -S_SGUN8 SHTG A 3 NULL S_SGUN9 -S_SGUN9 SHTG A 7 A_ReFire S_SGUN - -S_SGUNFLASH1 SHTF A* 4 A_Light1 S_SGUNFLASH2 -S_SGUNFLASH2 SHTF B* 3 A_Light2 S_LIGHTDONE - - -// -// double shotgun -// -S_DSGUN SHT2 A 1 A_WeaponReady S_DSGUN -S_DSGUNDOWN SHT2 A 1 A_Lower S_DSGUNDOWN -S_DSGUNUP SHT2 A 1 A_Raise S_DSGUNUP - -S_DSGUN1 SHT2 A 3 NULL S_DSGUN2 -S_DSGUN2 SHT2 A 7 A_FireShotgun2 S_DSGUN3 -S_DSGUN3 SHT2 B 7 NULL S_DSGUN4 -S_DSGUN4 SHT2 C 7 A_CheckReload S_DSGUN5 - -S_DSGUN5 SHT2 D 7 A_OpenShotgun2 S_DSGUN6 -S_DSGUN6 SHT2 E 7 NULL S_DSGUN7 -S_DSGUN7 SHT2 F 7 A_LoadShotgun2 S_DSGUN8 -S_DSGUN8 SHT2 G 6 NULL S_DSGUN9 -S_DSGUN9 SHT2 H 6 A_CloseShotgun2 S_DSGUN10 -S_DSGUN10 SHT2 A 5 A_ReFire S_DSGUN - -S_DSNR1 SHT2 B 7 NULL S_DSNR2 -S_DSNR2 SHT2 A 3 NULL S_DSGUNDOWN - -S_DSGUNFLASH1 SHT2 I* 5 A_Light1 S_DSGUNFLASH2 -S_DSGUNFLASH2 SHT2 J* 4 A_Light2 S_LIGHTDONE - - -// -// chaingun -// -S_CHAIN CHGG A 1 A_WeaponReady S_CHAIN -S_CHAINDOWN CHGG A 1 A_Lower S_CHAINDOWN -S_CHAINUP CHGG A 1 A_Raise S_CHAINUP - -S_CHAIN1 CHGG A 4 A_FireCGun S_CHAIN2 -S_CHAIN2 CHGG B 4 A_FireCGun S_CHAIN3 -S_CHAIN3 CHGG B 0 A_ReFire S_CHAIN - -S_CHAINFLASH1 CHGF A* 5 A_Light1 S_LIGHTDONE -S_CHAINFLASH2 CHGF B* 5 A_Light2 S_LIGHTDONE - - -// -// missile -// -S_MISSILE MISG A 1 A_WeaponReady S_MISSILE -S_MISSILEDOWN MISG A 1 A_Lower S_MISSILEDOWN -S_MISSILEUP MISG A 1 A_Raise S_MISSILEUP - -S_MISSILE1 MISG B 8 A_GunFlash S_MISSILE2 -S_MISSILE2 MISG B 12 A_FireMissile S_MISSILE3 -S_MISSILE3 MISG B 0 A_ReFire S_MISSILE - -S_MISSILEFLASH1 MISF A* 3 A_Light1 S_MISSILEFLASH2 -S_MISSILEFLASH2 MISF B* 4 NULL S_MISSILEFLASH3 -S_MISSILEFLASH3 MISF C* 4 A_Light2 S_MISSILEFLASH4 -S_MISSILEFLASH4 MISF D* 4 A_Light2 S_LIGHTDONE - - -// -// chainsaw -// -S_SAW SAWG C 4 A_WeaponReady S_SAWB -S_SAWB SAWG D 4 A_WeaponReady S_SAW -S_SAWDOWN SAWG C 1 A_Lower S_SAWDOWN -S_SAWUP SAWG C 1 A_Raise S_SAWUP - -S_SAW1 SAWG A 4 A_Saw S_SAW2 -S_SAW2 SAWG B 4 A_Saw S_SAW3 -S_SAW3 SAWG B 0 A_ReFire S_SAW - - -// -// plasma -// -S_PLASMA PLSG A 1 A_WeaponReady S_PLASMA -S_PLASMADOWN PLSG A 1 A_Lower S_PLASMADOWN -S_PLASMAUP PLSG A 1 A_Raise S_PLASMAUP - -S_PLASMA1 PLSG A 3 A_FirePlasma S_PLASMA2 -S_PLASMA2 PLSG B 20 A_Refire S_PLASMA - -S_PLASMAFLASH1 PLSF A* 4 A_Light1 S_LIGHTDONE -S_PLASMAFLASH2 PLSF B* 4 A_Light1 S_LIGHTDONE - - -// -// BFG -// -S_BFG BFGG A 1 A_WeaponReady S_BFG -S_BFGDOWN BFGG A 1 A_Lower S_BFGDOWN -S_BFGUP BFGG A 1 A_Raise S_BFGUP - -S_BFG1 BFGG A 20 A_BFGsound S_BFG2 -S_BFG2 BFGG B 10 A_GunFlash S_BFG3 -S_BFG3 BFGG B 10 A_FireBFG S_BFG4 -S_BFG4 BFGG B 20 A_ReFire S_BFG - -S_BFGFLASH1 BFGF A* 11 A_Light1 S_BFGFLASH2 -S_BFGFLASH2 BFGF B* 6 A_Light2 S_LIGHTDONE - - - -//============================================================================ -// world objects -//============================================================================ - -S_BLOOD1 BLUD C 8 NULL S_BLOOD2 -S_BLOOD2 BLUD B 8 NULL S_BLOOD3 -S_BLOOD3 BLUD A 8 NULL S_NULL - -S_PUFF1 PUFF A* 4 NULL S_PUFF2 -S_PUFF2 PUFF B 4 NULL S_PUFF3 -S_PUFF3 PUFF C 4 NULL S_PUFF4 -S_PUFF4 PUFF D 4 NULL S_NULL - - -// fireballs - -S_TBALL1 BAL1 A* 4 NULL S_TBALL2 -S_TBALL2 BAL1 B* 4 NULL S_TBALL1 - -S_TBALLX1 BAL1 C* 6 NULL S_TBALLX2 -S_TBALLX2 BAL1 D* 6 NULL S_TBALLX3 -S_TBALLX3 BAL1 E* 6 NULL S_NULL - - -S_RBALL1 BAL2 A* 4 NULL S_RBALL2 -S_RBALL2 BAL2 B* 4 NULL S_RBALL1 - -S_RBALLX1 BAL2 C* 6 NULL S_RBALLX2 -S_RBALLX2 BAL2 D* 6 NULL S_RBALLX3 -S_RBALLX3 BAL2 E* 6 NULL S_NULL - - - -// plasma balls - -S_PLASBALL PLSS A* 6 NULL S_PLASBALL2 -S_PLASBALL2 PLSS B* 6 NULL S_PLASBALL - -// -// Plasma explosion on an object -// -S_PLASEXP PLSE A* 4 NULL S_PLASEXP2 -S_PLASEXP2 PLSE B* 4 NULL S_PLASEXP3 -S_PLASEXP3 PLSE C* 4 NULL S_PLASEXP4 -S_PLASEXP4 PLSE D* 4 NULL S_PLASEXP5 -S_PLASEXP5 PLSE E* 4 NULL S_NULL - -// -// Rocket -// -S_ROCKET MISL A* 1 NULL S_ROCKET - -// -// BFG shot -// -S_BFGSHOT BFS1 A* 4 NULL S_BFGSHOT2 -S_BFGSHOT2 BFS1 B* 4 NULL S_BFGSHOT - -// -// BFG explosion when shot lands -// -S_BFGLAND BFE1 A* 8 NULL S_BFGLAND2 -S_BFGLAND2 BFE1 B* 8 NULL S_BFGLAND3 -S_BFGLAND3 BFE1 C* 8 A_BFGSpray S_BFGLAND4 -S_BFGLAND4 BFE1 D* 8 NULL S_BFGLAND5 -S_BFGLAND5 BFE1 E* 8 NULL S_BFGLAND6 -S_BFGLAND6 BFE1 F* 8 NULL S_NULL - -// -// BFG explosion on an object -// -S_BFGEXP BFE2 A* 8 NULL S_BFGEXP2 -S_BFGEXP2 BFE2 B* 8 NULL S_BFGEXP3 -S_BFGEXP3 BFE2 C* 8 NULL S_BFGEXP4 -S_BFGEXP4 BFE2 D* 8 NULL S_NULL - -// explosions - -S_EXPLODE1 MISL B* 8 A_Explode S_EXPLODE2 -S_EXPLODE2 MISL C* 6 NULL S_EXPLODE3 -S_EXPLODE3 MISL D* 4 NULL S_NULL - -// -// Teleport Fog -// -S_TFOG TFOG A* 6 NULL S_TFOG01 -S_TFOG01 TFOG B* 6 NULL S_TFOG02 -S_TFOG02 TFOG A* 6 NULL S_TFOG2 -S_TFOG2 TFOG B* 6 NULL S_TFOG3 -S_TFOG3 TFOG C* 6 NULL S_TFOG4 -S_TFOG4 TFOG D* 6 NULL S_TFOG5 -S_TFOG5 TFOG E* 6 NULL S_TFOG6 -S_TFOG6 TFOG F* 6 NULL S_TFOG7 -S_TFOG7 TFOG G* 6 NULL S_TFOG8 -S_TFOG8 TFOG H* 6 NULL S_TFOG9 -S_TFOG9 TFOG I* 6 NULL S_TFOG10 -S_TFOG10 TFOG J* 6 NULL S_NULL - -// -// Item Teleport Fog -// -S_IFOG IFOG A* 6 NULL S_IFOG01 -S_IFOG01 IFOG B* 6 NULL S_IFOG02 -S_IFOG02 IFOG A* 6 NULL S_IFOG2 -S_IFOG2 IFOG B* 6 NULL S_IFOG3 -S_IFOG3 IFOG C* 6 NULL S_IFOG4 -S_IFOG4 IFOG D* 6 NULL S_IFOG5 -S_IFOG5 IFOG E* 6 NULL S_NULL - - -//============================================================================== - -// player - -$ MT_PLAYER -spawnstate S_PLAY -seestate S_PLAY_RUN1 -spawnhealth 100 -painstate S_PLAY_PAIN -painchance 255 -painsound *pain100_1 -reactiontime 0 -missilestate S_PLAY_ATK1 -deathstate S_PLAY_DIE1 -xdeathstate S_PLAY_XDIE1 -deathsound *death1 -radius 16 -height 56 -flags MF_SOLID|MF_SHOOTABLE|MF_DROPOFF|MF_PICKUP|MF_NOTDMATCH -flags2 MF2_WINDTHRUST|MF2_FLOORCLIP|MF2_TELESTOMP|MF2_SLIDE|MF2_PASSMOBJ|MF2_PUSHWALL - - -S_PLAY PLAY A -1 NULL S_NULL - -S_PLAY_RUN1 PLAY A 4 NULL S_PLAY_RUN2 -S_PLAY_RUN2 PLAY B 4 NULL S_PLAY_RUN3 -S_PLAY_RUN3 PLAY C 4 NULL S_PLAY_RUN4 -S_PLAY_RUN4 PLAY D 4 NULL S_PLAY_RUN1 - -S_PLAY_ATK1 PLAY E 12 NULL S_PLAY -S_PLAY_ATK2 PLAY F* 6 NULL S_PLAY_ATK1 - -S_PLAY_PAIN PLAY G 4 NULL S_PLAY_PAIN2 -S_PLAY_PAIN2 PLAY G 4 A_Pain S_PLAY - -S_PLAY_DIE1 PLAY H 10 NULL S_PLAY_DIE2 -S_PLAY_DIE2 PLAY I 10 A_PlayerScream S_PLAY_DIE3 -S_PLAY_DIE3 PLAY J 10 A_Fall S_PLAY_DIE4 -S_PLAY_DIE4 PLAY K 10 NULL S_PLAY_DIE5 -S_PLAY_DIE5 PLAY L 10 NULL S_PLAY_DIE6 -S_PLAY_DIE6 PLAY M 10 NULL S_PLAY_DIE7 -S_PLAY_DIE7 PLAY N -1 NULL S_NULL - -S_PLAY_XDIE1 PLAY O 5 NULL S_PLAY_XDIE2 -S_PLAY_XDIE2 PLAY P 5 A_XScream S_PLAY_XDIE3 -S_PLAY_XDIE3 PLAY Q 5 A_Fall S_PLAY_XDIE4 -S_PLAY_XDIE4 PLAY R 5 NULL S_PLAY_XDIE5 -S_PLAY_XDIE5 PLAY S 5 NULL S_PLAY_XDIE6 -S_PLAY_XDIE6 PLAY T 5 NULL S_PLAY_XDIE7 -S_PLAY_XDIE7 PLAY U 5 NULL S_PLAY_XDIE8 -S_PLAY_XDIE8 PLAY V 5 NULL S_PLAY_XDIE9 -S_PLAY_XDIE9 PLAY W -1 NULL S_NULL - -//============================================================================== -// Former Humans -//============================================================================== - -// possesed humans - -$ MT_POSSESSED -doomednum 3004 -spawnstate S_POSS_STND -spawnhealth 20 -seestate S_POSS_RUN1 -seesound grunt/sight1 -attacksound grunt/attack -painstate S_POSS_PAIN -painchance 200 -painsound grunt/pain -missilestate S_POSS_ATK1 -deathstate S_POSS_DIE1 -xdeathstate S_POSS_XDIE1 -raisestate S_POSS_RAISE1 -deathsound grunt/death1 -speed 8 -radius 20 -height 56 -activesound grunt/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL - -$ MT_STEALTHPOSSESSED -doomednum 9061 -spawnstate S_POSS_STND -spawnhealth 20 -seestate S_POSS_RUN1 -seesound grunt/sight1 -attacksound grunt/attack -painstate S_POSS_PAIN -painchance 200 -painsound grunt/pain -missilestate S_POSS_ATK1 -deathstate S_POSS_DIE1 -xdeathstate S_POSS_XDIE1 -raisestate S_POSS_RAISE1 -deathsound grunt/death1 -speed 8 -radius 20 -height 56 -activesound grunt/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_STEALTH -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL -translucency 0 - - -S_POSS_STND POSS A 10 A_Look S_POSS_STND2 -S_POSS_STND2 POSS B 10 A_Look S_POSS_STND - -S_POSS_RUN1 POSS A 4 A_Chase S_POSS_RUN2 -S_POSS_RUN2 POSS A 4 A_Chase S_POSS_RUN3 -S_POSS_RUN3 POSS B 4 A_Chase S_POSS_RUN4 -S_POSS_RUN4 POSS B 4 A_Chase S_POSS_RUN5 -S_POSS_RUN5 POSS C 4 A_Chase S_POSS_RUN6 -S_POSS_RUN6 POSS C 4 A_Chase S_POSS_RUN7 -S_POSS_RUN7 POSS D 4 A_Chase S_POSS_RUN8 -S_POSS_RUN8 POSS D 4 A_Chase S_POSS_RUN1 - -S_POSS_ATK1 POSS E 10 A_FaceTarget S_POSS_ATK2 -S_POSS_ATK2 POSS F 8 A_PosAttack S_POSS_ATK3 -S_POSS_ATK3 POSS E 8 NULL S_POSS_RUN1 - -S_POSS_PAIN POSS G 3 NULL S_POSS_PAIN2 -S_POSS_PAIN2 POSS G 3 A_Pain S_POSS_RUN1 - -S_POSS_DIE1 POSS H 5 NULL S_POSS_DIE2 -S_POSS_DIE2 POSS I 5 A_Scream S_POSS_DIE3 -S_POSS_DIE3 POSS J 5 A_Fall S_POSS_DIE4 -S_POSS_DIE4 POSS K 5 NULL S_POSS_DIE5 -S_POSS_DIE5 POSS L -1 NULL S_NULL - -S_POSS_XDIE1 POSS M 5 NULL S_POSS_XDIE2 -S_POSS_XDIE2 POSS N 5 A_XScream S_POSS_XDIE3 -S_POSS_XDIE3 POSS O 5 A_Fall S_POSS_XDIE4 -S_POSS_XDIE4 POSS P 5 NULL S_POSS_XDIE5 -S_POSS_XDIE5 POSS Q 5 NULL S_POSS_XDIE6 -S_POSS_XDIE6 POSS R 5 NULL S_POSS_XDIE7 -S_POSS_XDIE7 POSS S 5 NULL S_POSS_XDIE8 -S_POSS_XDIE8 POSS T 5 NULL S_POSS_XDIE9 -S_POSS_XDIE9 POSS U -1 NULL S_NULL - -S_POSS_RAISE1 POSS K 5 NULL S_POSS_RAISE2 -S_POSS_RAISE2 POSS J 5 NULL S_POSS_RAISE3 -S_POSS_RAISE3 POSS I 5 NULL S_POSS_RAISE4 -S_POSS_RAISE4 POSS H 5 NULL S_POSS_RUN1 - - -//============================================================================== -// Former Human Sergeants -//============================================================================== - -// shotgun possesed humans - -$ MT_SHOTGUY -doomednum 9 -spawnstate S_SPOS_STND -spawnhealth 30 -seestate S_SPOS_RUN1 -seesound shotguy/sight1 -painstate S_SPOS_PAIN -painchance 170 -painsound shotguy/pain -missilestate S_SPOS_ATK1 -deathstate S_SPOS_DIE1 -xdeathstate S_SPOS_XDIE1 -raisestate S_SPOS_RAISE1 -deathsound shotguy/death1 -speed 8 -radius 20 -height 56 -activesound shotguy/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL - -$ MT_STEALTHSHOTGUY -doomednum 9060 -spawnstate S_SPOS_STND -spawnhealth 30 -seestate S_SPOS_RUN1 -seesound shotguy/sight1 -painstate S_SPOS_PAIN -painchance 170 -painsound shotguy/pain -missilestate S_SPOS_ATK1 -deathstate S_SPOS_DIE1 -xdeathstate S_SPOS_XDIE1 -raisestate S_SPOS_RAISE1 -deathsound shotguy/death1 -speed 8 -radius 20 -height 56 -activesound shotguy/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_STEALTH -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL -translucency 0 - -S_SPOS_STND SPOS A 10 A_Look S_SPOS_STND2 -S_SPOS_STND2 SPOS B 10 A_Look S_SPOS_STND - -S_SPOS_RUN1 SPOS A 3 A_Chase S_SPOS_RUN2 -S_SPOS_RUN2 SPOS A 3 A_Chase S_SPOS_RUN3 -S_SPOS_RUN3 SPOS B 3 A_Chase S_SPOS_RUN4 -S_SPOS_RUN4 SPOS B 3 A_Chase S_SPOS_RUN5 -S_SPOS_RUN5 SPOS C 3 A_Chase S_SPOS_RUN6 -S_SPOS_RUN6 SPOS C 3 A_Chase S_SPOS_RUN7 -S_SPOS_RUN7 SPOS D 3 A_Chase S_SPOS_RUN8 -S_SPOS_RUN8 SPOS D 3 A_Chase S_SPOS_RUN1 - -S_SPOS_ATK1 SPOS E 10 A_FaceTarget S_SPOS_ATK2 -S_SPOS_ATK2 SPOS F* 10 A_SPosAttack S_SPOS_ATK3 -S_SPOS_ATK3 SPOS E 10 NULL S_SPOS_RUN1 - -S_SPOS_PAIN SPOS G 3 NULL S_SPOS_PAIN2 -S_SPOS_PAIN2 SPOS G 3 A_Pain S_SPOS_RUN1 - -S_SPOS_DIE1 SPOS H 5 NULL S_SPOS_DIE2 -S_SPOS_DIE2 SPOS I 5 A_Scream S_SPOS_DIE3 -S_SPOS_DIE3 SPOS J 5 A_Fall S_SPOS_DIE4 -S_SPOS_DIE4 SPOS K 5 NULL S_SPOS_DIE5 -S_SPOS_DIE5 SPOS L -1 NULL S_NULL - -S_SPOS_XDIE1 SPOS M 5 NULL S_SPOS_XDIE2 -S_SPOS_XDIE2 SPOS N 5 A_XScream S_SPOS_XDIE3 -S_SPOS_XDIE3 SPOS O 5 A_Fall S_SPOS_XDIE4 -S_SPOS_XDIE4 SPOS P 5 NULL S_SPOS_XDIE5 -S_SPOS_XDIE5 SPOS Q 5 NULL S_SPOS_XDIE6 -S_SPOS_XDIE6 SPOS R 5 NULL S_SPOS_XDIE7 -S_SPOS_XDIE7 SPOS S 5 NULL S_SPOS_XDIE8 -S_SPOS_XDIE8 SPOS T 5 NULL S_SPOS_XDIE9 -S_SPOS_XDIE9 SPOS U -1 NULL S_NULL - -S_SPOS_RAISE1 SPOS L 5 NULL S_SPOS_RAISE2 -S_SPOS_RAISE2 SPOS K 5 NULL S_SPOS_RAISE3 -S_SPOS_RAISE3 SPOS J 5 NULL S_SPOS_RAISE4 -S_SPOS_RAISE4 SPOS I 5 NULL S_SPOS_RAISE5 -S_SPOS_RAISE5 SPOS H 5 NULL S_SPOS_RUN1 - -//============================================================================== -// The Archvile -//============================================================================== - -$ MT_VILE -doomednum 64 -spawnstate S_VILE_STND -spawnhealth 700 -seestate S_VILE_RUN1 -seesound vile/sight -painstate S_VILE_PAIN -painchance 10 -painsound vile/pain -missilestate S_VILE_ATK1 -deathstate S_VILE_DIE1 -deathsound vile/death -speed 15 -radius 20 -height 56 -activesound vile/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL -mass 500 - -// stealth - -$ MT_STEALTHVILE -doomednum 9051 -spawnstate S_VILE_STND -spawnhealth 700 -seestate S_VILE_RUN1 -seesound vile/sight -painstate S_VILE_PAIN -painchance 10 -painsound vile/pain -missilestate S_VILE_ATK1 -deathstate S_VILE_DIE1 -deathsound vile/death -speed 15 -radius 20 -height 56 -activesound vile/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_STEALTH -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL -mass 500 -translucency 0 - -S_VILE_STND VILE A 10 A_Look S_VILE_STND2 -S_VILE_STND2 VILE B 10 A_Look S_VILE_STND - -S_VILE_RUN1 VILE A 2 A_VileChase S_VILE_RUN2 -S_VILE_RUN2 VILE A 2 A_VileChase S_VILE_RUN3 -S_VILE_RUN3 VILE B 2 A_VileChase S_VILE_RUN4 -S_VILE_RUN4 VILE B 2 A_VileChase S_VILE_RUN5 -S_VILE_RUN5 VILE C 2 A_VileChase S_VILE_RUN6 -S_VILE_RUN6 VILE C 2 A_VileChase S_VILE_RUN7 -S_VILE_RUN7 VILE D 2 A_VileChase S_VILE_RUN8 -S_VILE_RUN8 VILE D 2 A_VileChase S_VILE_RUN9 -S_VILE_RUN9 VILE E 2 A_VileChase S_VILE_RUN10 -S_VILE_RUN10 VILE E 2 A_VileChase S_VILE_RUN11 -S_VILE_RUN11 VILE F 2 A_VileChase S_VILE_RUN12 -S_VILE_RUN12 VILE F 2 A_VileChase S_VILE_RUN1 - -S_VILE_ATK1 VILE G* 0 A_VileStart S_VILE_ATK2 -S_VILE_ATK2 VILE G* 10 A_FaceTarget S_VILE_ATK3 -S_VILE_ATK3 VILE H* 8 A_VileTarget S_VILE_ATK4 -S_VILE_ATK4 VILE I* 8 A_FaceTarget S_VILE_ATK5 -S_VILE_ATK5 VILE J* 8 A_FaceTarget S_VILE_ATK6 -S_VILE_ATK6 VILE K* 8 A_FaceTarget S_VILE_ATK7 -S_VILE_ATK7 VILE L* 8 A_FaceTarget S_VILE_ATK8 -S_VILE_ATK8 VILE M* 8 A_FaceTarget S_VILE_ATK9 -S_VILE_ATK9 VILE N* 8 A_FaceTarget S_VILE_ATK10 -S_VILE_ATK10 VILE O* 8 A_VileAttack S_VILE_ATK11 -S_VILE_ATK11 VILE P* 20 NULL S_VILE_RUN1 - -S_VILE_HEAL1 VILE [* 10 NULL S_VILE_HEAL2 -S_VILE_HEAL2 VILE \* 10 NULL S_VILE_HEAL3 -S_VILE_HEAL3 VILE ]* 10 NULL S_VILE_RUN1 - -S_VILE_PAIN VILE Q 5 NULL S_VILE_PAIN2 -S_VILE_PAIN2 VILE Q 5 A_Pain S_VILE_RUN1 - -S_VILE_DIE1 VILE Q 7 NULL S_VILE_DIE2 -S_VILE_DIE2 VILE R 7 A_Scream S_VILE_DIE3 -S_VILE_DIE3 VILE S 7 A_Fall S_VILE_DIE4 -S_VILE_DIE4 VILE T 7 NULL S_VILE_DIE5 -S_VILE_DIE5 VILE U 7 NULL S_VILE_DIE6 -S_VILE_DIE6 VILE V 7 NULL S_VILE_DIE7 -S_VILE_DIE7 VILE W 7 NULL S_VILE_DIE8 -S_VILE_DIE8 VILE X 5 NULL S_VILE_DIE9 -S_VILE_DIE9 VILE Y 5 NULL S_VILE_DIE10 -S_VILE_DIE10 VILE Z -1 NULL S_NULL - - -// -// hellfire -// -$ MT_FIRE -spawnstate S_FIRE1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -S_FIRE1 FIRE A* 2 A_StartFire S_FIRE2 -S_FIRE2 FIRE B* 2 A_Fire S_FIRE3 -S_FIRE3 FIRE A* 2 A_Fire S_FIRE4 -S_FIRE4 FIRE B* 2 A_Fire S_FIRE5 - -S_FIRE5 FIRE C* 2 A_FireCrackle S_FIRE6 -S_FIRE6 FIRE B* 2 A_Fire S_FIRE7 -S_FIRE7 FIRE C* 2 A_Fire S_FIRE8 -S_FIRE8 FIRE B* 2 A_Fire S_FIRE9 - -S_FIRE9 FIRE C* 2 A_Fire S_FIRE10 -S_FIRE10 FIRE D* 2 A_Fire S_FIRE11 -S_FIRE11 FIRE C* 2 A_Fire S_FIRE12 -S_FIRE12 FIRE D* 2 A_Fire S_FIRE13 -S_FIRE13 FIRE C* 2 A_Fire S_FIRE14 - -S_FIRE14 FIRE D* 2 A_Fire S_FIRE15 -S_FIRE15 FIRE E* 2 A_Fire S_FIRE16 -S_FIRE16 FIRE D* 2 A_Fire S_FIRE17 -S_FIRE17 FIRE E* 2 A_Fire S_FIRE18 -S_FIRE18 FIRE D* 2 A_Fire S_FIRE19 - -S_FIRE19 FIRE E* 2 A_FireCrackle S_FIRE20 -S_FIRE20 FIRE F* 2 A_Fire S_FIRE21 -S_FIRE21 FIRE E* 2 A_Fire S_FIRE22 -S_FIRE22 FIRE F* 2 A_Fire S_FIRE23 -S_FIRE23 FIRE E* 2 A_Fire S_FIRE24 -S_FIRE24 FIRE F* 2 A_Fire S_FIRE25 - -S_FIRE25 FIRE G* 2 A_Fire S_FIRE26 -S_FIRE26 FIRE H* 2 A_Fire S_FIRE27 -S_FIRE27 FIRE G* 2 A_Fire S_FIRE28 -S_FIRE28 FIRE H* 2 A_Fire S_FIRE29 -S_FIRE29 FIRE G* 2 A_Fire S_FIRE30 -S_FIRE30 FIRE H* 2 A_Fire S_NULL - - -//============================================================================== -// The Revenant -//============================================================================== - -$ MT_UNDEAD -doomednum 66 -spawnstate S_SKEL_STND -spawnhealth 300 -seestate S_SKEL_RUN1 -seesound skeleton/sight -painstate S_SKEL_PAIN -painchance 100 -painsound skeleton/pain -meleestate S_SKEL_FIST1 -missilestate S_SKEL_MISS1 -deathstate S_SKEL_DIE1 -raisestate S_SKEL_RAISE1 -deathsound skeleton/death -speed 10 -radius 20 -height 56 -activesound skeleton/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL -mass 500 - -$ MT_STEALTHUNDEAD -doomednum 9059 -spawnstate S_SKEL_STND -spawnhealth 300 -seestate S_SKEL_RUN1 -seesound skeleton/sight -painstate S_SKEL_PAIN -painchance 100 -painsound skeleton/pain -meleestate S_SKEL_FIST1 -missilestate S_SKEL_MISS1 -deathstate S_SKEL_DIE1 -raisestate S_SKEL_RAISE1 -deathsound skeleton/death -speed 10 -radius 20 -height 56 -activesound skeleton/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_STEALTH -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL -mass 500 -translucency 0 - -$ MT_TRACER -spawnstate S_TRACER -deathstate S_TRACEEXP1 -speed 10 -damage 10 -seesound skeleton/attack -deathsound skeleton/tracex -radius 11 -height 8 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_PCROSS|MF2_IMPACT -translucency .75 - -//S_TRACER MISL A* 1 A_Tracer S_TRACER - -// explosions - -//S_TRACEEXP1 MISL B* 8 NULL S_TRACEEXP2 -//S_TRACEEXP2 MISL C* 6 NULL S_TRACEEXP3 -//S_TRACEEXP3 MISL D* 4 NULL S_NULL - - -$ MT_SMOKE -spawnstate S_SMOKE1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency .50 - -// trailing smoke - -S_SMOKE1 PUFF B 4 NULL S_SMOKE2 -S_SMOKE2 PUFF C 4 NULL S_SMOKE3 -S_SMOKE3 PUFF B 4 NULL S_SMOKE4 -S_SMOKE4 PUFF C 4 NULL S_SMOKE5 -S_SMOKE5 PUFF D 4 NULL S_NULL - -// Revenant shot - -S_TRACER FATB A* 2 A_Tracer S_TRACER2 -S_TRACER2 FATB B* 2 A_Tracer S_TRACER - -S_TRACEEXP1 FBXP A* 8 NULL S_TRACEEXP2 -S_TRACEEXP2 FBXP B* 6 NULL S_TRACEEXP3 -S_TRACEEXP3 FBXP C* 4 NULL S_NULL - - - -S_SKEL_STND SKEL A 10 A_Look S_SKEL_STND2 -S_SKEL_STND2 SKEL B 10 A_Look S_SKEL_STND - -S_SKEL_RUN1 SKEL A 2 A_Chase S_SKEL_RUN2 -S_SKEL_RUN2 SKEL A 2 A_Chase S_SKEL_RUN3 -S_SKEL_RUN3 SKEL B 2 A_Chase S_SKEL_RUN4 -S_SKEL_RUN4 SKEL B 2 A_Chase S_SKEL_RUN5 -S_SKEL_RUN5 SKEL C 2 A_Chase S_SKEL_RUN6 -S_SKEL_RUN6 SKEL C 2 A_Chase S_SKEL_RUN7 -S_SKEL_RUN7 SKEL D 2 A_Chase S_SKEL_RUN8 -S_SKEL_RUN8 SKEL D 2 A_Chase S_SKEL_RUN9 -S_SKEL_RUN9 SKEL E 2 A_Chase S_SKEL_RUN10 -S_SKEL_RUN10 SKEL E 2 A_Chase S_SKEL_RUN11 -S_SKEL_RUN11 SKEL F 2 A_Chase S_SKEL_RUN12 -S_SKEL_RUN12 SKEL F 2 A_Chase S_SKEL_RUN1 - -S_SKEL_FIST1 SKEL G 0 A_FaceTarget S_SKEL_FIST2 -S_SKEL_FIST2 SKEL G 6 A_SkelWhoosh S_SKEL_FIST3 -S_SKEL_FIST3 SKEL H 6 A_FaceTarget S_SKEL_FIST4 -S_SKEL_FIST4 SKEL I 6 A_SkelFist S_SKEL_RUN1 - -S_SKEL_MISS1 SKEL J* 0 A_FaceTarget S_SKEL_MISS2 -S_SKEL_MISS2 SKEL J* 10 A_FaceTarget S_SKEL_MISS3 -S_SKEL_MISS3 SKEL K 10 A_SkelMissile S_SKEL_MISS4 -S_SKEL_MISS4 SKEL K 10 A_FaceTarget S_SKEL_RUN1 - -S_SKEL_PAIN SKEL L 5 NULL S_SKEL_PAIN2 -S_SKEL_PAIN2 SKEL L 5 A_Pain S_SKEL_RUN1 - -S_SKEL_DIE1 SKEL L 7 NULL S_SKEL_DIE2 -S_SKEL_DIE2 SKEL M 7 NULL S_SKEL_DIE3 -S_SKEL_DIE3 SKEL N 7 A_Scream S_SKEL_DIE4 -S_SKEL_DIE4 SKEL O 7 A_Fall S_SKEL_DIE5 -S_SKEL_DIE5 SKEL P 7 NULL S_SKEL_DIE6 -S_SKEL_DIE6 SKEL Q -1 NULL S_NULL - -S_SKEL_RAISE1 SKEL Q 5 NULL S_SKEL_RAISE2 -S_SKEL_RAISE2 SKEL P 5 NULL S_SKEL_RAISE3 -S_SKEL_RAISE3 SKEL O 5 NULL S_SKEL_RAISE4 -S_SKEL_RAISE4 SKEL N 5 NULL S_SKEL_RAISE5 -S_SKEL_RAISE5 SKEL M 5 NULL S_SKEL_RAISE6 -S_SKEL_RAISE6 SKEL L 5 NULL S_SKEL_RUN1 - - -//============================================================================== -// The Mancubus -//============================================================================== - -$ MT_FATSO -doomednum 67 -spawnstate S_FATT_STND -spawnhealth 600 -seestate S_FATT_RUN1 -seesound fatso/sight -painstate S_FATT_PAIN -painchance 80 -painsound fatso/pain -missilestate S_FATT_ATK1 -deathstate S_FATT_DIE1 -raisestate S_FATT_RAISE1 -deathsound fatso/death -speed 8 -radius 48 -height 64 -activesound fatso/active -mass 1000 -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL - -$ MT_STEALTHFATSO -doomednum 9058 -spawnstate S_FATT_STND -spawnhealth 600 -seestate S_FATT_RUN1 -seesound fatso/sight -painstate S_FATT_PAIN -painchance 80 -painsound fatso/pain -missilestate S_FATT_ATK1 -deathstate S_FATT_DIE1 -raisestate S_FATT_RAISE1 -deathsound fatso/death -speed 8 -radius 48 -height 64 -activesound fatso/active -mass 1000 -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_STEALTH -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL -translucency 0 - -$ MT_FATSHOT -spawnstate S_FATSHOT1 -deathstate S_FATSHOTX1 -speed 20 -damage 8 -seesound fatso/attack -deathsound fatso/shotx -radius 6 -height 8 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_PCROSS|MF2_IMPACT -translucency .75 - -// fatso shot (Mancubus) - -S_FATSHOT1 MANF A* 4 NULL S_FATSHOT2 -S_FATSHOT2 MANF B* 4 NULL S_FATSHOT1 - -S_FATSHOTX1 MISL B* 8 NULL S_FATSHOTX2 -S_FATSHOTX2 MISL C* 6 NULL S_FATSHOTX3 -S_FATSHOTX3 MISL D* 4 NULL S_NULL - -//================================================== - -S_FATT_STND FATT A 15 A_Look S_FATT_STND2 -S_FATT_STND2 FATT B 15 A_Look S_FATT_STND - -S_FATT_RUN1 FATT A 4 A_Chase S_FATT_RUN2 -S_FATT_RUN2 FATT A 4 A_Chase S_FATT_RUN3 -S_FATT_RUN3 FATT B 4 A_Chase S_FATT_RUN4 -S_FATT_RUN4 FATT B 4 A_Chase S_FATT_RUN5 -S_FATT_RUN5 FATT C 4 A_Chase S_FATT_RUN6 -S_FATT_RUN6 FATT C 4 A_Chase S_FATT_RUN7 -S_FATT_RUN7 FATT D 4 A_Chase S_FATT_RUN8 -S_FATT_RUN8 FATT D 4 A_Chase S_FATT_RUN9 -S_FATT_RUN9 FATT E 4 A_Chase S_FATT_RUN10 -S_FATT_RUN10 FATT E 4 A_Chase S_FATT_RUN11 -S_FATT_RUN11 FATT F 4 A_Chase S_FATT_RUN12 -S_FATT_RUN12 FATT F 4 A_Chase S_FATT_RUN1 - -S_FATT_ATK1 FATT G 20 A_FatRaise S_FATT_ATK2 -S_FATT_ATK2 FATT H* 10 A_FatAttack1 S_FATT_ATK3 -S_FATT_ATK3 FATT I 5 A_FaceTarget S_FATT_ATK4 -S_FATT_ATK4 FATT G 5 A_FaceTarget S_FATT_ATK5 -S_FATT_ATK5 FATT H* 10 A_FatAttack2 S_FATT_ATK6 -S_FATT_ATK6 FATT I 5 A_FaceTarget S_FATT_ATK7 -S_FATT_ATK7 FATT G 5 A_FaceTarget S_FATT_ATK8 -S_FATT_ATK8 FATT H* 10 A_FatAttack3 S_FATT_ATK9 -S_FATT_ATK9 FATT I 5 A_FaceTarget S_FATT_ATK10 -S_FATT_ATK10 FATT G 5 A_FaceTarget S_FATT_RUN1 - -S_FATT_PAIN FATT J 3 NULL S_FATT_PAIN2 -S_FATT_PAIN2 FATT J 3 A_Pain S_FATT_RUN1 - -S_FATT_DIE1 FATT K 6 NULL S_FATT_DIE2 -S_FATT_DIE2 FATT L 6 A_Scream S_FATT_DIE3 -S_FATT_DIE3 FATT M 6 A_Fall S_FATT_DIE4 -S_FATT_DIE4 FATT N 6 NULL S_FATT_DIE5 -S_FATT_DIE5 FATT O 6 NULL S_FATT_DIE6 -S_FATT_DIE6 FATT P 6 NULL S_FATT_DIE7 -S_FATT_DIE7 FATT Q 6 NULL S_FATT_DIE8 -S_FATT_DIE8 FATT R 6 NULL S_FATT_DIE9 -S_FATT_DIE9 FATT S 6 NULL S_FATT_DIE10 -S_FATT_DIE10 FATT T -1 A_BossDeath S_NULL - -S_FATT_RAISE1 FATT R 5 NULL S_FATT_RAISE2 -S_FATT_RAISE2 FATT Q 5 NULL S_FATT_RAISE3 -S_FATT_RAISE3 FATT P 5 NULL S_FATT_RAISE4 -S_FATT_RAISE4 FATT O 5 NULL S_FATT_RAISE5 -S_FATT_RAISE5 FATT N 5 NULL S_FATT_RAISE6 -S_FATT_RAISE6 FATT M 5 NULL S_FATT_RAISE7 -S_FATT_RAISE7 FATT L 5 NULL S_FATT_RAISE8 -S_FATT_RAISE8 FATT K 5 NULL S_FATT_RUN1 - -//============================================================================== -// Former Human Commando -//============================================================================== - -// chaingun possesed humans - -$ MT_CHAINGUY -doomednum 65 -spawnstate S_CPOS_STND -spawnhealth 70 -seestate S_CPOS_RUN1 -seesound chainguy/sight1 -painstate S_CPOS_PAIN -painchance 170 -painsound chainguy/pain -missilestate S_CPOS_ATK1 -deathstate S_CPOS_DIE1 -xdeathstate S_CPOS_XDIE1 -raisestate S_CPOS_RAISE1 -deathsound chainguy/death1 -speed 8 -radius 20 -height 56 -activesound chainguy/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL - -$ MT_STEALTHCHAINGUY -doomednum 9054 -spawnstate S_CPOS_STND -spawnhealth 70 -seestate S_CPOS_RUN1 -seesound chainguy/sight1 -painstate S_CPOS_PAIN -painchance 170 -painsound chainguy/pain -missilestate S_CPOS_ATK1 -deathstate S_CPOS_DIE1 -xdeathstate S_CPOS_XDIE1 -raisestate S_CPOS_RAISE1 -deathsound chainguy/death1 -speed 8 -radius 20 -height 56 -activesound chainguy/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_STEALTH -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL -translucency 0 - - -S_CPOS_STND CPOS A 10 A_Look S_CPOS_STND2 -S_CPOS_STND2 CPOS B 10 A_Look S_CPOS_STND - -S_CPOS_RUN1 CPOS A 3 A_Chase S_CPOS_RUN2 -S_CPOS_RUN2 CPOS A 3 A_Chase S_CPOS_RUN3 -S_CPOS_RUN3 CPOS B 3 A_Chase S_CPOS_RUN4 -S_CPOS_RUN4 CPOS B 3 A_Chase S_CPOS_RUN5 -S_CPOS_RUN5 CPOS C 3 A_Chase S_CPOS_RUN6 -S_CPOS_RUN6 CPOS C 3 A_Chase S_CPOS_RUN7 -S_CPOS_RUN7 CPOS D 3 A_Chase S_CPOS_RUN8 -S_CPOS_RUN8 CPOS D 3 A_Chase S_CPOS_RUN1 - -S_CPOS_ATK1 CPOS E 10 A_FaceTarget S_CPOS_ATK2 -S_CPOS_ATK2 CPOS F* 4 A_CPosAttack S_CPOS_ATK3 -S_CPOS_ATK3 CPOS E* 4 A_CPosAttack S_CPOS_ATK4 -S_CPOS_ATK4 CPOS F 1 A_CPosRefire S_CPOS_ATK2 - -S_CPOS_PAIN CPOS G 3 NULL S_CPOS_PAIN2 -S_CPOS_PAIN2 CPOS G 3 A_Pain S_CPOS_RUN1 - -S_CPOS_DIE1 CPOS H 5 NULL S_CPOS_DIE2 -S_CPOS_DIE2 CPOS I 5 A_Scream S_CPOS_DIE3 -S_CPOS_DIE3 CPOS J 5 A_Fall S_CPOS_DIE4 -S_CPOS_DIE4 CPOS K 5 NULL S_CPOS_DIE5 -S_CPOS_DIE5 CPOS L 5 NULL S_CPOS_DIE6 -S_CPOS_DIE6 CPOS M 5 NULL S_CPOS_DIE7 -S_CPOS_DIE7 CPOS N -1 NULL S_NULL - -S_CPOS_XDIE1 CPOS O 5 NULL S_CPOS_XDIE2 -S_CPOS_XDIE2 CPOS P 5 A_XScream S_CPOS_XDIE3 -S_CPOS_XDIE3 CPOS Q 5 A_Fall S_CPOS_XDIE4 -S_CPOS_XDIE4 CPOS R 5 NULL S_CPOS_XDIE5 -S_CPOS_XDIE5 CPOS S 5 NULL S_CPOS_XDIE6 -S_CPOS_XDIE6 CPOS T -1 NULL S_NULL - -S_CPOS_RAISE1 CPOS N 5 NULL S_CPOS_RAISE2 -S_CPOS_RAISE2 CPOS M 5 NULL S_CPOS_RAISE3 -S_CPOS_RAISE3 CPOS L 5 NULL S_CPOS_RAISE4 -S_CPOS_RAISE4 CPOS K 5 NULL S_CPOS_RAISE5 -S_CPOS_RAISE5 CPOS J 5 NULL S_CPOS_RAISE6 -S_CPOS_RAISE6 CPOS I 5 NULL S_CPOS_RAISE7 -S_CPOS_RAISE7 CPOS H 5 NULL S_CPOS_RUN1 - -//============================================================================== -// Imps -//============================================================================== - -// troops - -$ MT_TROOP -doomednum 3001 -spawnstate S_TROO_STND -spawnhealth 60 -seestate S_TROO_RUN1 -seesound imp/sight1 -painstate S_TROO_PAIN -painchance 200 -painsound imp/pain -meleestate S_TROO_ATK1 -missilestate S_TROO_ATK1 -deathstate S_TROO_DIE1 -xdeathstate S_TROO_XDIE1 -raisestate S_TROO_RAISE1 -deathsound imp/death1 -speed 8 -radius 20 -height 56 -activesound imp/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL - -$ MT_STEALTHTROOP -doomednum 9057 -spawnstate S_TROO_STND -spawnhealth 60 -seestate S_TROO_RUN1 -seesound imp/sight1 -painstate S_TROO_PAIN -painchance 200 -painsound imp/pain -meleestate S_TROO_ATK1 -missilestate S_TROO_ATK1 -deathstate S_TROO_DIE1 -xdeathstate S_TROO_XDIE1 -raisestate S_TROO_RAISE1 -deathsound imp/death1 -speed 8 -radius 20 -height 56 -activesound imp/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_STEALTH -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL -translucency 0 - - -S_TROO_STND TROO A 10 A_Look S_TROO_STND2 -S_TROO_STND2 TROO B 10 A_Look S_TROO_STND - -S_TROO_RUN1 TROO A 3 A_Chase S_TROO_RUN2 -S_TROO_RUN2 TROO A 3 A_Chase S_TROO_RUN3 -S_TROO_RUN3 TROO B 3 A_Chase S_TROO_RUN4 -S_TROO_RUN4 TROO B 3 A_Chase S_TROO_RUN5 -S_TROO_RUN5 TROO C 3 A_Chase S_TROO_RUN6 -S_TROO_RUN6 TROO C 3 A_Chase S_TROO_RUN7 -S_TROO_RUN7 TROO D 3 A_Chase S_TROO_RUN8 -S_TROO_RUN8 TROO D 3 A_Chase S_TROO_RUN1 - -S_TROO_ATK1 TROO E 8 A_FaceTarget S_TROO_ATK2 -S_TROO_ATK2 TROO F 8 A_FaceTarget S_TROO_ATK3 -S_TROO_ATK3 TROO G 6 A_TroopAttack S_TROO_RUN1 - -S_TROO_PAIN TROO H 2 NULL S_TROO_PAIN2 -S_TROO_PAIN2 TROO H 2 A_Pain S_TROO_RUN1 - -S_TROO_DIE1 TROO I 8 NULL S_TROO_DIE2 -S_TROO_DIE2 TROO J 8 A_Scream S_TROO_DIE3 -S_TROO_DIE3 TROO K 6 NULL S_TROO_DIE4 -S_TROO_DIE4 TROO L 6 A_FALL S_TROO_DIE5 -S_TROO_DIE5 TROO M -1 NULL S_NULL - -S_TROO_XDIE1 TROO N 5 NULL S_TROO_XDIE2 -S_TROO_XDIE2 TROO O 5 A_XScream S_TROO_XDIE3 -S_TROO_XDIE3 TROO P 5 NULL S_TROO_XDIE4 -S_TROO_XDIE4 TROO Q 5 A_FALL S_TROO_XDIE5 -S_TROO_XDIE5 TROO R 5 NULL S_TROO_XDIE6 -S_TROO_XDIE6 TROO S 5 NULL S_TROO_XDIE7 -S_TROO_XDIE7 TROO T 5 NULL S_TROO_XDIE8 -S_TROO_XDIE8 TROO U -1 NULL S_NULL - -S_TROO_RAISE1 TROO M 8 NULL S_TROO_RAISE2 -S_TROO_RAISE2 TROO L 8 NULL S_TROO_RAISE3 -S_TROO_RAISE3 TROO K 6 NULL S_TROO_RAISE4 -S_TROO_RAISE4 TROO J 6 NULL S_TROO_RAISE5 -S_TROO_RAISE5 TROO I 6 NULL S_TROO_RUN1 - -//============================================================================== -// Spectre -//============================================================================== - -// sargeant/ shadow sargeant - -$ MT_SERGEANT -doomednum 3002 -spawnstate S_SARG_STND -spawnhealth 150 -seestate S_SARG_RUN1 -seesound demon/sight -attacksound demon/melee -painstate S_SARG_PAIN -painchance 180 -painsound demon/pain -meleestate S_SARG_ATK1 -deathstate S_SARG_DIE1 -raisestate S_SARG_RAISE1 -deathsound demon/death -speed 10 -radius 30 -height 56 -mass 400 -activesound demon/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL - -$ MT_SHADOWS -doomednum 58 -spawnstate S_SARG_STND -spawnhealth 150 -seestate S_SARG_RUN1 -seesound spectre/sight -attacksound spectre/attack -painstate S_SARG_PAIN -painchance 180 -painsound spectre/pain -meleestate S_SARG_ATK1 -deathstate S_SARG_DIE1 -deathsound spectre/death -raisestate S_SARG_RAISE1 -speed 10 -radius 30 -height 56 -mass 400 -activesound spectre/active -flags MF_SOLID|MF_SHOOTABLE|MF_SHADOW|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL - -$ MT_STEALTHSERGEANT -doomednum 9055 -spawnstate S_SARG_STND -spawnhealth 150 -seestate S_SARG_RUN1 -seesound demon/sight -attacksound demon/melee -painstate S_SARG_PAIN -painchance 180 -painsound demon/pain -meleestate S_SARG_ATK1 -deathstate S_SARG_DIE1 -raisestate S_SARG_RAISE1 -deathsound demon/death -speed 10 -radius 30 -height 56 -mass 400 -activesound demon/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_STEALTH -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL -translucency 0 - - -S_SARG_STND SARG A 10 A_Look S_SARG_STND2 -S_SARG_STND2 SARG B 10 A_Look S_SARG_STND - -S_SARG_RUN1 SARG A 2 A_Chase S_SARG_RUN2 -S_SARG_RUN2 SARG A 2 A_Chase S_SARG_RUN3 -S_SARG_RUN3 SARG B 2 A_Chase S_SARG_RUN4 -S_SARG_RUN4 SARG B 2 A_Chase S_SARG_RUN5 -S_SARG_RUN5 SARG C 2 A_Chase S_SARG_RUN6 -S_SARG_RUN6 SARG C 2 A_Chase S_SARG_RUN7 -S_SARG_RUN7 SARG D 2 A_Chase S_SARG_RUN8 -S_SARG_RUN8 SARG D 2 A_Chase S_SARG_RUN1 - -S_SARG_ATK1 SARG E 8 A_FaceTarget S_SARG_ATK2 -S_SARG_ATK2 SARG F 8 A_FaceTarget S_SARG_ATK3 -S_SARG_ATK3 SARG G 8 A_SargAttack S_SARG_RUN1 - -S_SARG_PAIN SARG H 2 NULL S_SARG_PAIN2 -S_SARG_PAIN2 SARG H 2 A_Pain S_SARG_RUN1 - -S_SARG_DIE1 SARG I 8 NULL S_SARG_DIE2 -S_SARG_DIE2 SARG J 8 A_Scream S_SARG_DIE3 -S_SARG_DIE3 SARG K 4 NULL S_SARG_DIE4 -S_SARG_DIE4 SARG L 4 A_Fall S_SARG_DIE5 -S_SARG_DIE5 SARG M 4 NULL S_SARG_DIE6 -S_SARG_DIE6 SARG N -1 NULL S_NULL - -S_SARG_RAISE1 SARG N 5 NULL S_SARG_RAISE2 -S_SARG_RAISE2 SARG M 5 NULL S_SARG_RAISE3 -S_SARG_RAISE3 SARG L 5 NULL S_SARG_RAISE4 -S_SARG_RAISE4 SARG K 5 NULL S_SARG_RAISE5 -S_SARG_RAISE5 SARG J 5 NULL S_SARG_RAISE6 -S_SARG_RAISE6 SARG I 5 NULL S_SARG_RUN1 - -//============================================================================== -// Cacodemon -//============================================================================== - -// demon head - -$ MT_HEAD -doomednum 3005 -spawnstate S_HEAD_STND -spawnhealth 400 -seestate S_HEAD_RUN1 -seesound caco/sight -painstate S_HEAD_PAIN -painchance 128 -painsound caco/pain -missilestate S_HEAD_ATK1 -deathstate S_HEAD_DIE1 -raisestate S_HEAD_RAISE1 -deathsound caco/death -speed 8 -radius 31 -height 56 -mass 400 -activesound caco/active -flags MF_SOLID|MF_SHOOTABLE|MF_FLOAT|MF_NOGRAVITY|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL - -$ MT_STEALTHHEAD -doomednum 9053 -spawnstate S_HEAD_STND -spawnhealth 400 -seestate S_HEAD_RUN1 -seesound caco/sight -painstate S_HEAD_PAIN -painchance 128 -painsound caco/pain -missilestate S_HEAD_ATK1 -deathstate S_HEAD_DIE1 -raisestate S_HEAD_RAISE1 -deathsound caco/death -speed 8 -radius 31 -height 56 -mass 400 -activesound caco/active -flags MF_SOLID|MF_SHOOTABLE|MF_FLOAT|MF_NOGRAVITY|MF_COUNTKILL|MF_STEALTH -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL -translucency 0 - -S_HEAD_STND HEAD A 10 A_Look S_HEAD_STND - -S_HEAD_RUN1 HEAD A 3 A_Chase S_HEAD_RUN1 - -S_HEAD_ATK1 HEAD B 5 A_FaceTarget S_HEAD_ATK2 -S_HEAD_ATK2 HEAD C 5 A_FaceTarget S_HEAD_ATK3 -S_HEAD_ATK3 HEAD D* 5 A_HeadAttack S_HEAD_RUN1 - -S_HEAD_PAIN HEAD E 3 NULL S_HEAD_PAIN2 -S_HEAD_PAIN2 HEAD E 3 A_Pain S_HEAD_PAIN3 -S_HEAD_PAIN3 HEAD F 6 NULL S_HEAD_RUN1 - -S_HEAD_DIE1 HEAD G 8 NULL S_HEAD_DIE2 -S_HEAD_DIE2 HEAD H 8 A_Scream S_HEAD_DIE3 -S_HEAD_DIE3 HEAD I 8 NULL S_HEAD_DIE4 -S_HEAD_DIE4 HEAD J 8 NULL S_HEAD_DIE5 -S_HEAD_DIE5 HEAD K 8 A_Fall S_HEAD_DIE6 -S_HEAD_DIE6 HEAD L -1 NULL S_NULL - -S_HEAD_RAISE1 HEAD L 8 NULL S_HEAD_RAISE2 -S_HEAD_RAISE2 HEAD K 8 NULL S_HEAD_RAISE3 -S_HEAD_RAISE3 HEAD J 8 NULL S_HEAD_RAISE4 -S_HEAD_RAISE4 HEAD I 8 NULL S_HEAD_RAISE5 -S_HEAD_RAISE5 HEAD H 8 NULL S_HEAD_RAISE6 -S_HEAD_RAISE6 HEAD G 8 NULL S_HEAD_RUN1 - -//============================================================================== -// Baron of Hell -//============================================================================== - -// bruiser - -$ MT_BRUISER -doomednum 3003 -spawnstate S_BOSS_STND -spawnhealth 1000 -seestate S_BOSS_RUN1 -seesound baron/sight -painstate S_BOSS_PAIN -painchance 50 -painsound baron/pain -meleestate S_BOSS_ATK1 -missilestate S_BOSS_ATK1 -deathstate S_BOSS_DIE1 -raisestate S_BOSS_RAISE1 -deathsound baron/death -speed 8 -radius 24 -height 64 -mass 1000 -activesound baron/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL - -$ MT_STEALTHBRUISER -doomednum 9052 -spawnstate S_BOSS_STND -spawnhealth 1000 -seestate S_BOSS_RUN1 -seesound baron/sight -painstate S_BOSS_PAIN -painchance 50 -painsound baron/pain -meleestate S_BOSS_ATK1 -missilestate S_BOSS_ATK1 -deathstate S_BOSS_DIE1 -raisestate S_BOSS_RAISE1 -deathsound baron/death -speed 8 -radius 24 -height 64 -mass 1000 -activesound baron/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_STEALTH -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL -translucency 0 - -$ MT_BRUISERSHOT -spawnstate S_BRBALL1 -deathstate S_BRBALLX1 -speed 15 -damage 8 -seesound baron/attack -deathsound baron/shotx -radius 6 -height 8 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_PCROSS|MF2_IMPACT -translucency .75 - -// bruiser shot - -S_BRBALL1 BAL7 A* 4 NULL S_BRBALL2 -S_BRBALL2 BAL7 B* 4 NULL S_BRBALL1 - -S_BRBALLX1 BAL7 C* 6 NULL S_BRBALLX2 -S_BRBALLX2 BAL7 D* 6 NULL S_BRBALLX3 -S_BRBALLX3 BAL7 E* 6 NULL S_NULL - - - -S_BOSS_STND BOSS A 10 A_Look S_BOSS_STND2 -S_BOSS_STND2 BOSS B 10 A_Look S_BOSS_STND - -S_BOSS_RUN1 BOSS A 3 A_Chase S_BOSS_RUN2 -S_BOSS_RUN2 BOSS A 3 A_Chase S_BOSS_RUN3 -S_BOSS_RUN3 BOSS B 3 A_Chase S_BOSS_RUN4 -S_BOSS_RUN4 BOSS B 3 A_Chase S_BOSS_RUN5 -S_BOSS_RUN5 BOSS C 3 A_Chase S_BOSS_RUN6 -S_BOSS_RUN6 BOSS C 3 A_Chase S_BOSS_RUN7 -S_BOSS_RUN7 BOSS D 3 A_Chase S_BOSS_RUN8 -S_BOSS_RUN8 BOSS D 3 A_Chase S_BOSS_RUN1 - -S_BOSS_ATK1 BOSS E 8 A_FaceTarget S_BOSS_ATK2 -S_BOSS_ATK2 BOSS F 8 A_FaceTarget S_BOSS_ATK3 -S_BOSS_ATK3 BOSS G 8 A_BruisAttack S_BOSS_RUN1 - -S_BOSS_PAIN BOSS H 2 NULL S_BOSS_PAIN2 -S_BOSS_PAIN2 BOSS H 2 A_Pain S_BOSS_RUN1 - -S_BOSS_DIE1 BOSS I 8 NULL S_BOSS_DIE2 -S_BOSS_DIE2 BOSS J 8 A_Scream S_BOSS_DIE3 -S_BOSS_DIE3 BOSS K 8 NULL S_BOSS_DIE4 -S_BOSS_DIE4 BOSS L 8 A_Fall S_BOSS_DIE5 -S_BOSS_DIE5 BOSS M 8 NULL S_BOSS_DIE6 -S_BOSS_DIE6 BOSS N 8 NULL S_BOSS_DIE7 -S_BOSS_DIE7 BOSS O -1 A_BossDeath S_NULL - -S_BOSS_RAISE1 BOSS O 8 NULL S_BOSS_RAISE2 -S_BOSS_RAISE2 BOSS N 8 NULL S_BOSS_RAISE3 -S_BOSS_RAISE3 BOSS M 8 NULL S_BOSS_RAISE4 -S_BOSS_RAISE4 BOSS L 8 NULL S_BOSS_RAISE5 -S_BOSS_RAISE5 BOSS K 8 NULL S_BOSS_RAISE6 -S_BOSS_RAISE6 BOSS J 8 NULL S_BOSS_RAISE7 -S_BOSS_RAISE7 BOSS I 8 NULL S_BOSS_RUN1 - -//============================================================================== -// Hell Knight -//============================================================================== - -$ MT_KNIGHT -doomednum 69 -spawnstate S_BOS2_STND -spawnhealth 500 -seestate S_BOS2_RUN1 -seesound knight/sight -painstate S_BOS2_PAIN -painchance 50 -painsound knight/pain -meleestate S_BOS2_ATK1 -missilestate S_BOS2_ATK1 -deathstate S_BOS2_DIE1 -raisestate S_BOS2_RAISE1 -deathsound knight/death -speed 8 -radius 24 -height 64 -mass 1000 -activesound knight/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL - -$ MT_STEALTHKNIGHT -doomednum 9056 -spawnstate S_BOS2_STND -spawnhealth 500 -seestate S_BOS2_RUN1 -seesound knight/sight -painstate S_BOS2_PAIN -painchance 50 -painsound knight/pain -meleestate S_BOS2_ATK1 -missilestate S_BOS2_ATK1 -deathstate S_BOS2_DIE1 -raisestate S_BOS2_RAISE1 -deathsound knight/death -speed 8 -radius 24 -height 64 -mass 1000 -activesound knight/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_STEALTH -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL -translucency 0 - - -S_BOS2_STND BOS2 A 10 A_Look S_BOS2_STND2 -S_BOS2_STND2 BOS2 B 10 A_Look S_BOS2_STND - -S_BOS2_RUN1 BOS2 A 3 A_Chase S_BOS2_RUN2 -S_BOS2_RUN2 BOS2 A 3 A_Chase S_BOS2_RUN3 -S_BOS2_RUN3 BOS2 B 3 A_Chase S_BOS2_RUN4 -S_BOS2_RUN4 BOS2 B 3 A_Chase S_BOS2_RUN5 -S_BOS2_RUN5 BOS2 C 3 A_Chase S_BOS2_RUN6 -S_BOS2_RUN6 BOS2 C 3 A_Chase S_BOS2_RUN7 -S_BOS2_RUN7 BOS2 D 3 A_Chase S_BOS2_RUN8 -S_BOS2_RUN8 BOS2 D 3 A_Chase S_BOS2_RUN1 - -S_BOS2_ATK1 BOS2 E 8 A_FaceTarget S_BOS2_ATK2 -S_BOS2_ATK2 BOS2 F 8 A_FaceTarget S_BOS2_ATK3 -S_BOS2_ATK3 BOS2 G 8 A_BruisAttack S_BOS2_RUN1 - -S_BOS2_PAIN BOS2 H 2 NULL S_BOS2_PAIN2 -S_BOS2_PAIN2 BOS2 H 2 A_Pain S_BOS2_RUN1 - -S_BOS2_DIE1 BOS2 I 8 NULL S_BOS2_DIE2 -S_BOS2_DIE2 BOS2 J 8 A_Scream S_BOS2_DIE3 -S_BOS2_DIE3 BOS2 K 8 NULL S_BOS2_DIE4 -S_BOS2_DIE4 BOS2 L 8 A_Fall S_BOS2_DIE5 -S_BOS2_DIE5 BOS2 M 8 NULL S_BOS2_DIE6 -S_BOS2_DIE6 BOS2 N 8 NULL S_BOS2_DIE7 -S_BOS2_DIE7 BOS2 O -1 NULL S_NULL - -S_BOS2_RAISE1 BOS2 O 8 NULL S_BOS2_RAISE2 -S_BOS2_RAISE2 BOS2 N 8 NULL S_BOS2_RAISE3 -S_BOS2_RAISE3 BOS2 M 8 NULL S_BOS2_RAISE4 -S_BOS2_RAISE4 BOS2 L 8 NULL S_BOS2_RAISE5 -S_BOS2_RAISE5 BOS2 K 8 NULL S_BOS2_RAISE6 -S_BOS2_RAISE6 BOS2 J 8 NULL S_BOS2_RAISE7 -S_BOS2_RAISE7 BOS2 I 8 NULL S_BOS2_RUN1 - -//============================================================================== -// Lost Soul -//============================================================================== - -// demon skull - -$ MT_SKULL -doomednum 3006 -spawnstate S_SKULL_STND -spawnhealth 100 -seestate S_SKULL_RUN1 -attacksound skull/melee -painstate S_SKULL_PAIN -painchance 256 -painsound skull/pain -missilestate S_SKULL_ATK1 -deathstate S_SKULL_DIE1 -deathsound skull/death -speed 8 -radius 16 -height 56 -damage 3 // when attacking as a missile -mass 50 -activesound skull/active -flags MF_SOLID|MF_SHOOTABLE|MF_FLOAT|MF_NOGRAVITY -flags2 MF2_MCROSS|MF2_PUSHWALL|MF2_PASSMOBJ - - -S_SKULL_STND SKUL A* 10 A_Look S_SKULL_STND2 -S_SKULL_STND2 SKUL B* 10 A_Look S_SKULL_STND - -S_SKULL_RUN1 SKUL A* 6 A_Chase S_SKULL_RUN2 -S_SKULL_RUN2 SKUL B* 6 A_Chase S_SKULL_RUN1 - -S_SKULL_ATK1 SKUL C* 10 A_FaceTarget S_SKULL_ATK2 -S_SKULL_ATK2 SKUL D* 4 A_SkullAttack S_SKULL_ATK3 -S_SKULL_ATK3 SKUL C* 4 NULL S_SKULL_ATK4 -S_SKULL_ATK4 SKUL D* 4 NULL S_SKULL_ATK3 - -S_SKULL_PAIN SKUL E* 3 NULL S_SKULL_PAIN2 -S_SKULL_PAIN2 SKUL E* 3 A_Pain S_SKULL_RUN1 - -S_SKULL_DIE1 SKUL F* 6 NULL S_SKULL_DIE2 -S_SKULL_DIE2 SKUL G* 6 A_Scream S_SKULL_DIE3 -S_SKULL_DIE3 SKUL H* 6 NULL S_SKULL_DIE4 -S_SKULL_DIE4 SKUL I* 6 A_Fall S_SKULL_DIE5 -S_SKULL_DIE5 SKUL J 6 NULL S_SKULL_DIE6 -S_SKULL_DIE6 SKUL K 6 NULL S_NULL - - -//============================================================================== -// Spider Mastermind -//============================================================================== - -// spider boss - -$ MT_SPIDER -doomednum 7 -spawnstate S_SPID_STND -spawnhealth 3000 -seestate S_SPID_RUN1 -seesound spider/sight -attacksound spider/attack -painstate S_SPID_PAIN -painchance 40 -painsound spider/pain -missilestate S_SPID_ATK1 -deathstate S_SPID_DIE1 -deathsound spider/death -speed 12 -radius 128 -height 100 -mass 1000 -activesound spider/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_BOSS - - -S_SPID_STND SPID A 10 A_Look S_SPID_STND2 -S_SPID_STND2 SPID B 10 A_Look S_SPID_STND - -S_SPID_RUN1 SPID A 3 A_Metal S_SPID_RUN2 -S_SPID_RUN2 SPID A 3 A_Chase S_SPID_RUN3 -S_SPID_RUN3 SPID B 3 A_Chase S_SPID_RUN4 -S_SPID_RUN4 SPID B 3 A_Chase S_SPID_RUN5 -S_SPID_RUN5 SPID C 3 A_Metal S_SPID_RUN6 -S_SPID_RUN6 SPID C 3 A_Chase S_SPID_RUN7 -S_SPID_RUN7 SPID D 3 A_Chase S_SPID_RUN8 -S_SPID_RUN8 SPID D 3 A_Chase S_SPID_RUN9 -S_SPID_RUN9 SPID E 3 A_Metal S_SPID_RUN10 -S_SPID_RUN10 SPID E 3 A_Chase S_SPID_RUN11 -S_SPID_RUN11 SPID F 3 A_Chase S_SPID_RUN12 -S_SPID_RUN12 SPID F 3 A_Chase S_SPID_RUN1 - -S_SPID_ATK1 SPID A* 20 A_FaceTarget S_SPID_ATK2 -S_SPID_ATK2 SPID G* 4 A_SPosAttack S_SPID_ATK3 -S_SPID_ATK3 SPID H* 4 A_SPosAttack S_SPID_ATK4 -S_SPID_ATK4 SPID H* 1 A_SpidRefire S_SPID_ATK2 - -S_SPID_PAIN SPID I 3 NULL S_SPID_PAIN2 -S_SPID_PAIN2 SPID I 3 A_Pain S_SPID_RUN1 - -S_SPID_DIE1 SPID J 20 A_Scream S_SPID_DIE2 -S_SPID_DIE2 SPID K 10 A_Fall S_SPID_DIE3 -S_SPID_DIE3 SPID L 10 NULL S_SPID_DIE4 -S_SPID_DIE4 SPID M 10 NULL S_SPID_DIE5 -S_SPID_DIE5 SPID N 10 NULL S_SPID_DIE6 -S_SPID_DIE6 SPID O 10 NULL S_SPID_DIE7 -S_SPID_DIE7 SPID P 10 NULL S_SPID_DIE8 -S_SPID_DIE8 SPID Q 10 NULL S_SPID_DIE9 -S_SPID_DIE9 SPID R 10 NULL S_SPID_DIE10 -S_SPID_DIE10 SPID S 30 NULL S_SPID_DIE11 -S_SPID_DIE11 SPID S -1 A_BossDeath S_NULL - -//============================================================================== -// Arachnotron -//============================================================================== - -// baby spider - -$ MT_BABY -doomednum 68 -spawnstate S_BSPI_STND -spawnhealth 500 -seestate S_BSPI_SIGHT -seesound baby/sight -painstate S_BSPI_PAIN -painchance 128 -painsound baby/pain -missilestate S_BSPI_ATK1 -deathstate S_BSPI_DIE1 -raisestate S_BSPI_RAISE1 -deathsound baby/death -speed 12 -radius 64 -height 64 -mass 600 -activesound baby/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL - -// stealth baby spider - -$ MT_STEALTHBABY -doomednum 9050 -spawnstate S_BSPI_STND -spawnhealth 500 -seestate S_BSPI_SIGHT -seesound baby/sight -painstate S_BSPI_PAIN -painchance 128 -painsound baby/pain -missilestate S_BSPI_ATK1 -deathstate S_BSPI_DIE1 -raisestate S_BSPI_RAISE1 -deathsound baby/death -speed 12 -radius 64 -height 64 -mass 600 -activesound baby/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_STEALTH -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL -translucency 0 - -S_BSPI_STND BSPI A 10 A_Look S_BSPI_STND2 -S_BSPI_STND2 BSPI B 10 A_Look S_BSPI_STND - -S_BSPI_SIGHT BSPI A 20 NULL S_BSPI_RUN1 - -S_BSPI_RUN1 BSPI A 3 A_BabyMetal S_BSPI_RUN2 -S_BSPI_RUN2 BSPI A 3 A_Chase S_BSPI_RUN3 -S_BSPI_RUN3 BSPI B 3 A_Chase S_BSPI_RUN4 -S_BSPI_RUN4 BSPI B 3 A_Chase S_BSPI_RUN5 -S_BSPI_RUN5 BSPI C 3 A_Chase S_BSPI_RUN6 -S_BSPI_RUN6 BSPI C 3 A_Chase S_BSPI_RUN7 -S_BSPI_RUN7 BSPI D 3 A_BabyMetal S_BSPI_RUN8 -S_BSPI_RUN8 BSPI D 3 A_Chase S_BSPI_RUN9 -S_BSPI_RUN9 BSPI E 3 A_Chase S_BSPI_RUN10 -S_BSPI_RUN10 BSPI E 3 A_Chase S_BSPI_RUN11 -S_BSPI_RUN11 BSPI F 3 A_Chase S_BSPI_RUN12 -S_BSPI_RUN12 BSPI F 3 A_Chase S_BSPI_RUN1 - -S_BSPI_ATK1 BSPI A* 20 A_FaceTarget S_BSPI_ATK2 -S_BSPI_ATK2 BSPI G* 4 A_BspiAttack S_BSPI_ATK3 -S_BSPI_ATK3 BSPI H* 4 NULL S_BSPI_ATK4 -S_BSPI_ATK4 BSPI H* 1 A_SpidRefire S_BSPI_ATK2 - -S_BSPI_PAIN BSPI I 3 NULL S_BSPI_PAIN2 -S_BSPI_PAIN2 BSPI I 3 A_Pain S_BSPI_RUN1 - -S_BSPI_DIE1 BSPI J 20 A_Scream S_BSPI_DIE2 -S_BSPI_DIE2 BSPI K 7 A_Fall S_BSPI_DIE3 -S_BSPI_DIE3 BSPI L 7 NULL S_BSPI_DIE4 -S_BSPI_DIE4 BSPI M 7 NULL S_BSPI_DIE5 -S_BSPI_DIE5 BSPI N 7 NULL S_BSPI_DIE6 -S_BSPI_DIE6 BSPI O 7 NULL S_BSPI_DIE7 -S_BSPI_DIE7 BSPI P -1 A_BossDeath S_NULL - -S_BSPI_RAISE1 BSPI P 5 NULL S_BSPI_RAISE2 -S_BSPI_RAISE2 BSPI O 5 NULL S_BSPI_RAISE3 -S_BSPI_RAISE3 BSPI N 5 NULL S_BSPI_RAISE4 -S_BSPI_RAISE4 BSPI M 5 NULL S_BSPI_RAISE5 -S_BSPI_RAISE5 BSPI L 5 NULL S_BSPI_RAISE6 -S_BSPI_RAISE6 BSPI K 5 NULL S_BSPI_RAISE7 -S_BSPI_RAISE7 BSPI J 5 NULL S_BSPI_RUN1 - -// Plasma bolt -S_ARACH_PLAZ APLS A* 5 NULL S_ARACH_PLAZ2 -S_ARACH_PLAZ2 APLS B* 5 NULL S_ARACH_PLAZ - -// Explosion -S_ARACH_PLEX APBX A* 5 NULL S_ARACH_PLEX2 -S_ARACH_PLEX2 APBX B* 5 NULL S_ARACH_PLEX3 -S_ARACH_PLEX3 APBX C* 5 NULL S_ARACH_PLEX4 -S_ARACH_PLEX4 APBX D* 5 NULL S_ARACH_PLEX5 -S_ARACH_PLEX5 APBX E* 5 NULL S_NULL - - -//============================================================================== -// Cyberdemon -//============================================================================== - -// cyber boss - -$ MT_CYBORG -doomednum 16 -spawnstate S_CYBER_STND -spawnhealth 4000 -seestate S_CYBER_RUN1 -seesound cyber/sight -painstate S_CYBER_PAIN -painchance 20 -painsound cyber/pain -missilestate S_CYBER_ATK1 -deathstate S_CYBER_DIE1 -deathsound cyber/death -speed 16 -radius 40 -height 110 -mass 1000 -activesound cyber/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_BOSS - -S_CYBER_STND CYBR A 10 A_Look S_CYBER_STND2 -S_CYBER_STND2 CYBR B 10 A_Look S_CYBER_STND - -S_CYBER_RUN1 CYBR A 3 A_Hoof S_CYBER_RUN2 -S_CYBER_RUN2 CYBR A 3 A_Chase S_CYBER_RUN3 -S_CYBER_RUN3 CYBR B 3 A_Chase S_CYBER_RUN4 -S_CYBER_RUN4 CYBR B 3 A_Chase S_CYBER_RUN5 -S_CYBER_RUN5 CYBR C 3 A_Chase S_CYBER_RUN6 -S_CYBER_RUN6 CYBR C 3 A_Chase S_CYBER_RUN7 -S_CYBER_RUN7 CYBR D 3 A_Metal S_CYBER_RUN8 -S_CYBER_RUN8 CYBR D 3 A_Chase S_CYBER_RUN1 - -S_CYBER_ATK1 CYBR E 6 A_FaceTarget S_CYBER_ATK2 -S_CYBER_ATK2 CYBR F 12 A_CyberAttack S_CYBER_ATK3 -S_CYBER_ATK3 CYBR E 12 A_FaceTarget S_CYBER_ATK4 -S_CYBER_ATK4 CYBR F 12 A_CyberAttack S_CYBER_ATK5 -S_CYBER_ATK5 CYBR E 12 A_FaceTarget S_CYBER_ATK6 -S_CYBER_ATK6 CYBR F 12 A_CyberAttack S_CYBER_RUN1 - -S_CYBER_PAIN CYBR G 10 A_Pain S_CYBER_RUN1 - -S_CYBER_DIE1 CYBR H 10 NULL S_CYBER_DIE2 -S_CYBER_DIE2 CYBR I 10 A_Scream S_CYBER_DIE3 -S_CYBER_DIE3 CYBR J 10 NULL S_CYBER_DIE4 -S_CYBER_DIE4 CYBR K 10 NULL S_CYBER_DIE5 -S_CYBER_DIE5 CYBR L 10 NULL S_CYBER_DIE6 -S_CYBER_DIE6 CYBR M 10 A_Fall S_CYBER_DIE7 -S_CYBER_DIE7 CYBR N 10 NULL S_CYBER_DIE8 -S_CYBER_DIE8 CYBR O 10 NULL S_CYBER_DIE9 -S_CYBER_DIE9 CYBR P 30 NULL S_CYBER_DIE10 -S_CYBER_DIE10 CYBR P -1 A_BossDeath S_NULL - -//============================================================================== -// Pain Elemental -//============================================================================== - -$ MT_PAIN -doomednum 71 -spawnstate S_PAIN_STND -spawnhealth 400 -seestate S_PAIN_RUN1 -seesound pain/sight -painstate S_PAIN_PAIN -painchance 128 -painsound pain/pain -missilestate S_PAIN_ATK1 -deathstate S_PAIN_DIE1 -raisestate S_PAIN_RAISE1 -deathsound pain/death -speed 8 -radius 31 -height 56 -mass 400 -activesound pain/active -flags MF_SOLID|MF_SHOOTABLE|MF_FLOAT|MF_NOGRAVITY|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL - - -S_PAIN_STND PAIN A 10 A_Look S_PAIN_STND - -S_PAIN_RUN1 PAIN A 3 A_Chase S_PAIN_RUN2 -S_PAIN_RUN2 PAIN A 3 A_Chase S_PAIN_RUN3 -S_PAIN_RUN3 PAIN B 3 A_Chase S_PAIN_RUN4 -S_PAIN_RUN4 PAIN B 3 A_Chase S_PAIN_RUN5 -S_PAIN_RUN5 PAIN C 3 A_Chase S_PAIN_RUN6 -S_PAIN_RUN6 PAIN C 3 A_Chase S_PAIN_RUN1 - -S_PAIN_ATK1 PAIN D 5 A_FaceTarget S_PAIN_ATK2 -S_PAIN_ATK2 PAIN E 5 A_FaceTarget S_PAIN_ATK3 -S_PAIN_ATK3 PAIN F* 5 A_FaceTarget S_PAIN_ATK4 -S_PAIN_ATK4 PAIN F* 0 A_PainAttack S_PAIN_RUN1 - -S_PAIN_PAIN PAIN G 6 NULL S_PAIN_PAIN2 -S_PAIN_PAIN2 PAIN G 6 A_Pain S_PAIN_RUN1 - -S_PAIN_DIE1 PAIN H* 8 NULL S_PAIN_DIE2 -S_PAIN_DIE2 PAIN I* 8 A_Scream S_PAIN_DIE3 -S_PAIN_DIE3 PAIN J* 8 NULL S_PAIN_DIE4 -S_PAIN_DIE4 PAIN K* 8 NULL S_PAIN_DIE5 -S_PAIN_DIE5 PAIN L* 8 A_PainDie S_PAIN_DIE6 -S_PAIN_DIE6 PAIN M* 8 NULL S_NULL - -S_PAIN_RAISE1 PAIN M 8 NULL S_PAIN_RAISE2 -S_PAIN_RAISE2 PAIN L 8 NULL S_PAIN_RAISE3 -S_PAIN_RAISE3 PAIN K 8 NULL S_PAIN_RAISE4 -S_PAIN_RAISE4 PAIN J 8 NULL S_PAIN_RAISE5 -S_PAIN_RAISE5 PAIN I 8 NULL S_PAIN_RAISE6 -S_PAIN_RAISE6 PAIN H 8 NULL S_PAIN_RUN1 - -//============================================================================== -// Wolfenstein SS -//============================================================================== - -$ MT_WOLFSS -doomednum 84 -spawnstate S_SSWV_STND -spawnhealth 50 -seestate S_SSWV_RUN1 -seesound wolfss/sight -painstate S_SSWV_PAIN -painchance 170 -painsound wolfss/pain -missilestate S_SSWV_ATK1 -deathstate S_SSWV_DIE1 -xdeathstate S_SSWV_XDIE1 -raisestate S_SSWV_RAISE1 -deathsound wolfss/death -speed 8 -radius 20 -height 56 -activesound wolfss/active -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_MCROSS|MF2_PASSMOBJ|MF2_PUSHWALL - - -S_SSWV_STND SSWV A 10 A_Look S_SSWV_STND2 -S_SSWV_STND2 SSWV B 10 A_Look S_SSWV_STND - -S_SSWV_RUN1 SSWV A 3 A_Chase S_SSWV_RUN2 -S_SSWV_RUN2 SSWV A 3 A_Chase S_SSWV_RUN3 -S_SSWV_RUN3 SSWV B 3 A_Chase S_SSWV_RUN4 -S_SSWV_RUN4 SSWV B 3 A_Chase S_SSWV_RUN5 -S_SSWV_RUN5 SSWV C 3 A_Chase S_SSWV_RUN6 -S_SSWV_RUN6 SSWV C 3 A_Chase S_SSWV_RUN7 -S_SSWV_RUN7 SSWV D 3 A_Chase S_SSWV_RUN8 -S_SSWV_RUN8 SSWV D 3 A_Chase S_SSWV_RUN1 - -S_SSWV_ATK1 SSWV E 10 A_FaceTarget S_SSWV_ATK2 -S_SSWV_ATK2 SSWV F 10 A_FaceTarget S_SSWV_ATK3 -S_SSWV_ATK3 SSWV G* 4 A_CPosAttack S_SSWV_ATK4 -S_SSWV_ATK4 SSWV F 6 A_FaceTarget S_SSWV_ATK5 -S_SSWV_ATK5 SSWV G* 4 A_CPosAttack S_SSWV_ATK6 -S_SSWV_ATK6 SSWV F 1 A_CPosRefire S_SSWV_ATK2 - -S_SSWV_PAIN SSWV H 3 NULL S_SSWV_PAIN2 -S_SSWV_PAIN2 SSWV H 3 A_Pain S_SSWV_RUN1 - -S_SSWV_DIE1 SSWV I 5 NULL S_SSWV_DIE2 -S_SSWV_DIE2 SSWV J 5 A_Scream S_SSWV_DIE3 -S_SSWV_DIE3 SSWV K 5 A_Fall S_SSWV_DIE4 -S_SSWV_DIE4 SSWV L 5 NULL S_SSWV_DIE5 -S_SSWV_DIE5 SSWV M -1 NULL S_NULL - -S_SSWV_XDIE1 SSWV N 5 NULL S_SSWV_XDIE2 -S_SSWV_XDIE2 SSWV O 5 A_XScream S_SSWV_XDIE3 -S_SSWV_XDIE3 SSWV P 5 A_Fall S_SSWV_XDIE4 -S_SSWV_XDIE4 SSWV Q 5 NULL S_SSWV_XDIE5 -S_SSWV_XDIE5 SSWV R 5 NULL S_SSWV_XDIE6 -S_SSWV_XDIE6 SSWV S 5 NULL S_SSWV_XDIE7 -S_SSWV_XDIE7 SSWV T 5 NULL S_SSWV_XDIE8 -S_SSWV_XDIE8 SSWV U 5 NULL S_SSWV_XDIE9 -S_SSWV_XDIE9 SSWV V -1 NULL S_NULL - -S_SSWV_RAISE1 SSWV M 5 NULL S_SSWV_RAISE2 -S_SSWV_RAISE2 SSWV L 5 NULL S_SSWV_RAISE3 -S_SSWV_RAISE3 SSWV K 5 NULL S_SSWV_RAISE4 -S_SSWV_RAISE4 SSWV J 5 NULL S_SSWV_RAISE5 -S_SSWV_RAISE5 SSWV I 5 NULL S_SSWV_RUN1 - -//============================================================================== -// Commander Keen -//============================================================================== - -$ MT_KEEN -doomednum 72 -spawnstate S_KEENSTND -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY|MF_SHOOTABLE|MF_COUNTKILL -height 72 -radius 16 -spawnhealth 100 -painchance 256 -painstate S_KEENPAIN -deathstate S_COMMKEEN -deathsound keen/death -painsound keen/pain -mass 10000000 - -S_KEENSTND KEEN A -1 NULL S_KEENSTND - -S_COMMKEEN KEEN A 6 NULL S_COMMKEEN2 -S_COMMKEEN2 KEEN B 6 NULL S_COMMKEEN3 -S_COMMKEEN3 KEEN C 6 A_Scream S_COMMKEEN4 -S_COMMKEEN4 KEEN D 6 NULL S_COMMKEEN5 -S_COMMKEEN5 KEEN E 6 NULL S_COMMKEEN6 -S_COMMKEEN6 KEEN F 6 NULL S_COMMKEEN7 -S_COMMKEEN7 KEEN G 6 NULL S_COMMKEEN8 -S_COMMKEEN8 KEEN H 6 NULL S_COMMKEEN9 -S_COMMKEEN9 KEEN I 6 NULL S_COMMKEEN10 -S_COMMKEEN10 KEEN J 6 NULL S_COMMKEEN11 -S_COMMKEEN11 KEEN K 6 A_KeenDie S_COMMKEEN12 -S_COMMKEEN12 KEEN L -1 NULL S_NULL - -S_KEENPAIN KEEN M 4 NULL S_KEENPAIN2 -S_KEENPAIN2 KEEN M 8 A_Pain S_KEENSTND - -//============================================================================== - -$ MT_BOSSBRAIN -doomednum 88 -spawnstate S_BRAIN -spawnhealth 250 -deathstate S_BRAIN_DIE1 -deathsound brain/death -painstate S_BRAIN_PAIN -painchance 255 -painsound brain/pain -speed 0 -radius 16 -height 16 -flags MF_SOLID|MF_SHOOTABLE -mass 10000000 - -// stay in state until killed -S_BRAIN BBRN A -1 NULL S_NULL - -S_BRAIN_PAIN BBRN B 36 A_BrainPain S_BRAIN - -S_BRAIN_DIE1 BBRN A 100 A_BrainScream S_BRAIN_DIE2 -S_BRAIN_DIE2 BBRN A 10 NULL S_BRAIN_DIE3 -S_BRAIN_DIE3 BBRN A 10 NULL S_BRAIN_DIE4 -S_BRAIN_DIE4 BBRN A -1 A_BrainDie S_NULL - - -// source (invisible) for boss to spit MT_SPAWNSHOTS and look for player -$ MT_BOSSSPIT -doomednum 89 -spawnstate S_BRAINEYE -seestate S_BRAINEYESEE -height 32 -flags MF_NOBLOCKMAP|MF_NOSECTOR - -S_BRAINEYE SSWV A 10 A_Look S_BRAINEYE - -S_BRAINEYESEE SSWV A 181 A_BrainAwake S_BRAINEYE1 - -S_BRAINEYE1 SSWV A 150 A_BrainSpit S_BrainEye1 - - -// targets (invisible) for boss to spit at -$ MT_BOSSTARGET -doomednum 87 -height 32 -flags MF_NOBLOCKMAP|MF_NOSECTOR - - -// spinning demon cube to shoot from MT_BOSSSPIT to MT_BOSSTARGET -$ MT_SPAWNSHOT -spawnstate S_SPAWN1 -speed 10 -damage 3 -seesound brain/spit -deathsound brain/spawn -radius 6 -height 32 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_NOCLIP - -S_SPAWN1 BOSF A* 3 A_SpawnSound S_SPAWN2 -S_SPAWN2 BOSF B* 3 A_SpawnFly S_SPAWN3 -S_SPAWN3 BOSF C* 3 A_SpawnFly S_SPAWN4 -S_SPAWN4 BOSF D* 3 A_SpawnFly S_SPAWN1 - - -$ MT_SPAWNFIRE -spawnstate S_SPAWNFIRE1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency .66 - -S_SPAWNFIRE1 FIRE A* 4 A_Fire S_SPAWNFIRE2 -S_SPAWNFIRE2 FIRE B* 4 A_Fire S_SPAWNFIRE3 -S_SPAWNFIRE3 FIRE C* 4 A_Fire S_SPAWNFIRE4 -S_SPAWNFIRE4 FIRE D* 4 A_Fire S_SPAWNFIRE5 -S_SPAWNFIRE5 FIRE E* 4 A_Fire S_SPAWNFIRE6 -S_SPAWNFIRE6 FIRE F* 4 A_Fire S_SPAWNFIRE7 -S_SPAWNFIRE7 FIRE G* 4 A_Fire S_SPAWNFIRE8 -S_SPAWNFIRE8 FIRE H* 4 A_Fire S_NULL - -S_BRAINEXPLODE1 MISL B* 10 NULL S_BRAINEXPLODE2 -S_BRAINEXPLODE2 MISL C* 10 NULL S_BRAINEXPLODE3 -S_BRAINEXPLODE3 MISL D* 10 A_BrainExplode S_NULL - - -//============================================================================== - -$ MT_BARREL -doomednum 2035 -spawnstate S_BAR1 -spawnhealth 20 -deathstate S_BEXP -deathsound world/barrelx -speed 0 -radius 10 -height 42 -flags MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD - -// =========================== -// -// missiles -// -// =========================== - -$ MT_TROOPSHOT -spawnstate S_TBALL1 -deathstate S_TBALLX1 -speed 10 -damage 3 -seesound imp/attack -deathsound imp/shotx -radius 6 -height 8 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_PCROSS|MF2_IMPACT -translucency .75 - -$ MT_HEADSHOT -spawnstate S_RBALL1 -deathstate S_RBALLX1 -speed 10 -damage 5 -seesound caco/attack -deathsound caco/shotx -radius 6 -height 8 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_PCROSS|MF2_IMPACT -translucency .75 - -$ MT_ROCKET -spawnstate S_ROCKET -deathstate S_EXPLODE1 -speed 20 -damage 20 -seesound weapons/rocklf -deathsound weapons/rocklx -radius 11 -height 8 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_PCROSS|MF2_IMPACT - -$ MT_PLASMA -spawnstate S_PLASBALL -deathstate S_PLASEXP -speed 25 -damage 5 -seesound weapons/plasmaf -deathsound weapons/plasmax -radius 13 -height 8 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_PCROSS|MF2_IMPACT -translucency .66 - -$ MT_BFG -spawnstate S_BFGSHOT -deathstate S_BFGLAND -speed 25 -damage 100 -deathsound weapons/bfgx -radius 13 -height 8 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_PCROSS|MF2_IMPACT -translucency .66 - -$ MT_ARACHPLAZ -spawnstate S_ARACH_PLAZ -deathstate S_ARACH_PLEX -speed 25 -damage 5 -seesound baby/attack -deathsound baby/shotx -radius 13 -height 8 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_PCROSS|MF2_IMPACT -translucency .66 - - -// =================== -// -// misc -// -// =================== - -$ MT_PUFF -spawnstate S_PUFF1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency .50 - -$ MT_BLOOD -spawnstate S_BLOOD1 -flags MF_NOBLOCKMAP - -$ MT_TFOG -spawnstate S_TFOG -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency .66 - -$ MT_IFOG -spawnstate S_IFOG -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -$ MT_TELEPORTMAN -doomednum 14 -flags MF_NOBLOCKMAP|MF_NOSECTOR - -$ MT_EXTRABFG // explosion for all other visible monsters -spawnstate S_BFGEXP -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency .66 - - -// =================== -// -// static sprites -// -// =================== - -$ MT_ARMOR1 - doomednum 2018 spawnstate S_ARM1 flags MF_SPECIAL - item "Basic Armor" - -$ MT_ARMOR2 - doomednum 2019 spawnstate S_ARM2 flags MF_SPECIAL - item "Mega Armor" - -$ MT_HEALTHBONUS - doomednum 2014 spawnstate S_BON1 flags MF_SPECIAL|MF_COUNTITEM - item "Health Bonus" - -$ MT_ARMORBONUS - doomednum 2015 spawnstate S_BON2 flags MF_SPECIAL|MF_COUNTITEM - item "Armor Bonus" - -$ MT_BKEY - doomednum 5 spawnstate S_BKEY flags MF_SPECIAL|MF_NOTDMATCH - item "Blue Keycard" - -$ MT_RKEY - doomednum 13 spawnstate S_RKEY flags MF_SPECIAL|MF_NOTDMATCH - item "Red Keycard" - -$ MT_YKEY - doomednum 6 spawnstate S_YKEY flags MF_SPECIAL|MF_NOTDMATCH - item "Yellow Keycard" - -$ MT_YSKULL - doomednum 39 spawnstate S_YSKULL flags MF_SPECIAL|MF_NOTDMATCH - item "Yellow Skull Key" - -$ MT_RSKULL - doomednum 38 spawnstate S_RSKULL flags MF_SPECIAL|MF_NOTDMATCH - item "Red Skull Key" - -$ MT_BSKULL - doomednum 40 spawnstate S_BSKULL flags MF_SPECIAL|MF_NOTDMATCH - item "Blue Skull Key" - -$ MT_STIMPACK - doomednum 2011 spawnstate S_STIM flags MF_SPECIAL - item "Stim Pack" - -$ MT_MEDIKIT - doomednum 2012 spawnstate S_MEDI flags MF_SPECIAL - item "Medikit" - -$ MT_SOULSPHERE - doomednum 2013 spawnstate S_SOUL flags MF_SPECIAL|MF_COUNTITEM - item "Soul Sphere" - -$ MT_INV - doomednum 2022 spawnstate S_PINV flags MF_SPECIAL|MF_COUNTITEM - item "Invulnerability" - -$ MT_STRENGTH - doomednum 2023 spawnstate S_PSTR flags MF_SPECIAL|MF_COUNTITEM - item "Berserk" - -$ MT_INS - doomednum 2024 spawnstate S_PINS flags MF_SPECIAL|MF_COUNTITEM - item "Invisibility" - -$ MT_SUIT - doomednum 2025 spawnstate S_SUIT flags MF_SPECIAL - height 46 - item "Radiation Suit" - -$ MT_MAP - doomednum 2026 spawnstate S_PMAP flags MF_SPECIAL|MF_COUNTITEM - item "Computer Map" - -$ MT_LIGHTAMP - doomednum 2045 spawnstate S_PVIS flags MF_SPECIAL|MF_COUNTITEM - height 10 - item "Light Amplification Visor" - -$ MT_MEGA - doomednum 83 spawnstate S_MEGA flags MF_SPECIAL|MF_COUNTITEM - item "Mega Health" - -$ MT_CLIP - doomednum 2007 spawnstate S_CLIP flags MF_SPECIAL - height 10 - item "Bullets" - spawnhealth 10 - -$ MT_AMMOBOX - doomednum 2048 spawnstate S_AMMO flags MF_SPECIAL - item "Bullets" - spawnhealth 50 - -$ MT_ROCKETPICKUP - doomednum 2010 spawnstate S_ROCK flags MF_SPECIAL - item "Rockets" - spawnhealth 1 - -$ MT_ROCKETBOX - doomednum 2046 spawnstate S_BROK flags MF_SPECIAL - height 26 - item "Rockets" - spawnhealth 5 - -$ MT_CELL - doomednum 2047 spawnstate S_CELL flags MF_SPECIAL - height 10 - item "Cells" - spawnhealth 20 - -$ MT_CELLPACK - doomednum 17 spawnstate S_CELP flags MF_SPECIAL - height 18 - item "Cells" - spawnhealth 100 - -$ MT_SHELLS - doomednum 2008 spawnstate S_SHEL flags MF_SPECIAL - height 8 - item "Shells" - spawnhealth 4 - -$ MT_SHELLBOX - doomednum 2049 spawnstate S_SBOX flags MF_SPECIAL - height 10 - item "Shells" - spawnhealth 20 - -$ MT_BACKPACK - doomednum 8 spawnstate S_BPAK flags MF_SPECIAL - height 26 - item "Backpack" - -$ MT_BFGGUN - doomednum 2006 spawnstate S_BFUG flags MF_SPECIAL - height 20 - item "BFG 9000" - -$ MT_CHAINGUN - doomednum 2002 spawnstate S_MGUN flags MF_SPECIAL - item "Chaingun" - -$ MT_CHAINSAW - doomednum 2005 spawnstate S_CSAW flags MF_SPECIAL - item "Chainsaw" - -$ MT_ROCKETLAUNCHER - doomednum 2003 spawnstate S_LAUN flags MF_SPECIAL - item "Rocket Launcher" - -$ MT_PLASMAGUN - doomednum 2004 spawnstate S_PLAS flags MF_SPECIAL - item "Plasma Rifle" - -$ MT_SHOTGUN - doomednum 2001 spawnstate S_SHOT flags MF_SPECIAL - item "Shotgun" - -$ MT_SUPERSHOTGUN - doomednum 82 spawnstate S_SHOT2 flags MF_SPECIAL - item "Super Shotgun" - -$ + doomednum 85 spawnstate S_TECHLAMP flags MF_SOLID radius 16 height 80 -$ + doomednum 86 spawnstate S_TECH2LAMP flags MF_SOLID radius 16 height 60 - -$ + doomednum 2028 spawnstate S_COLU flags MF_SOLID radius 16 height 48 -$ + doomednum 30 spawnstate S_TALLGRNCOL flags MF_SOLID radius 16 height 52 -$ + doomednum 31 spawnstate S_SHRTGRNCOL flags MF_SOLID radius 16 height 40 -$ + doomednum 32 spawnstate S_TALLREDCOL flags MF_SOLID radius 16 height 52 -$ + doomednum 33 spawnstate S_SHRTREDCOL flags MF_SOLID radius 16 height 40 -$ + doomednum 37 spawnstate S_SKULLCOL flags MF_SOLID radius 16 height 40 -$ + doomednum 36 spawnstate S_HEARTCOL flags MF_SOLID radius 16 height 40 -$ + doomednum 41 spawnstate S_EVILEYE flags MF_SOLID radius 16 height 54 -$ + doomednum 42 spawnstate S_FLOATSKULL flags MF_SOLID radius 16 height 26 -$ + doomednum 43 spawnstate S_TORCHTREE flags MF_SOLID radius 16 height 56 -$ + doomednum 44 spawnstate S_BLUETORCH flags MF_SOLID radius 16 height 68 -$ + doomednum 45 spawnstate S_GREENTORCH flags MF_SOLID radius 16 height 68 -$ + doomednum 46 spawnstate S_REDTORCH flags MF_SOLID radius 16 height 68 -$ + doomednum 55 spawnstate S_BTORCHSHRT flags MF_SOLID radius 16 height 37 -$ + doomednum 56 spawnstate S_GTORCHSHRT flags MF_SOLID radius 16 height 37 -$ + doomednum 57 spawnstate S_RTORCHSHRT flags MF_SOLID radius 16 height 37 -$ + doomednum 47 spawnstate S_STALAGTITE flags MF_SOLID radius 16 height 40 -$ + doomednum 48 spawnstate S_TECHPILLAR flags MF_SOLID radius 16 height 128 - - -$ + doomednum 34 spawnstate S_CANDLESTIK height 14 -$ + doomednum 35 spawnstate S_CANDELABRA flags MF_SOLID radius 16 height 60 - -$ + doomednum 49 spawnstate S_BLOODYTWITCH - flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - height 68 radius 16 -$ + doomednum 50 spawnstate S_MEAT2 - flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - height 84 radius 16 -$ + doomednum 51 spawnstate S_MEAT3 - flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - height 84 radius 16 -$ + doomednum 52 spawnstate S_MEAT4 - flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - height 68 radius 16 -$ + doomednum 53 spawnstate S_MEAT5 - flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - height 52 radius 16 -$ + doomednum 59 spawnstate S_MEAT2 - flags MF_SPAWNCEILING|MF_NOGRAVITY - height 84 -$ + doomednum 60 spawnstate S_MEAT4 - flags MF_SPAWNCEILING|MF_NOGRAVITY - height 68 -$ + doomednum 61 spawnstate S_MEAT3 - flags MF_SPAWNCEILING|MF_NOGRAVITY - height 52 -$ + doomednum 62 spawnstate S_MEAT5 - flags MF_SPAWNCEILING|MF_NOGRAVITY - height 52 -$ + doomednum 63 spawnstate S_BLOODYTWITCH - flags MF_SPAWNCEILING|MF_NOGRAVITY - height 68 -$ + doomednum 22 spawnstate S_HEAD_DIE6 height 38 -$ + doomednum 15 spawnstate S_PLAY_DIE7 height 12 -$ + doomednum 18 spawnstate S_POSS_DIE5 height 14 -$ + doomednum 21 spawnstate S_SARG_DIE6 height 14 -$ + doomednum 23 spawnstate S_SKULL_DIE6 height 16 -$ + doomednum 20 spawnstate S_TROO_DIE5 height 18 -$ + doomednum 19 spawnstate S_SPOS_DIE5 height 16 -$ MT_GUTS - doomednum 10 spawnstate S_PLAY_XDIE9 height 8 -$ + doomednum 12 spawnstate S_PLAY_XDIE9 height 8 -$ + doomednum 28 spawnstate S_HEADSONSTICK flags MF_SOLID radius 16 height 64 -$ MT_GIBS - doomednum 24 spawnstate S_GIBS height 8 -$ + doomednum 27 spawnstate S_HEADONASTICK flags MF_SOLID radius 16 height 56 -$ + doomednum 29 spawnstate S_HEADCANDLES flags MF_SOLID radius 16 height 42 -$ + doomednum 25 spawnstate S_DEADSTICK flags MF_SOLID radius 16 height 64 -$ + doomednum 26 spawnstate S_LIVESTICK flags MF_SOLID radius 16 height 64 -$ + doomednum 54 spawnstate S_BIGTREE flags MF_SOLID radius 32 height 108 -$ MT_BURNINGBARREL - doomednum 70 spawnstate S_BBAR1 flags MF_SOLID radius 16 height 32 -$ + doomednum 73 spawnstate S_HANGNOGUTS -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY -height 88 radius 16 -$ + doomednum 74 spawnstate S_HANGBNOBRAIN -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY -height 88 radius 16 -$ + doomednum 75 spawnstate S_HANGTLOOKDN -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY -height 64 radius 16 -$ + doomednum 76 spawnstate S_HANGTSKULL -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY -height 64 radius 16 -$ + doomednum 77 spawnstate S_HANGTLOOKUP -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY -height 64 radius 16 -$ + doomednum 78 spawnstate S_HANGTNOBRAIN -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY -height 64 radius 16 -$ MT_COLONGIBS - doomednum 79 spawnstate S_COLONGIBS flags MF_NOBLOCKMAP height 4 -$ MT_SMALLPOOL - doomednum 80 spawnstate S_SMALLPOOL flags MF_NOBLOCKMAP height 1 -$ MT_BRAINSTEM - doomednum 81 spawnstate S_BRAINSTEM flags MF_NOBLOCKMAP height 4 - -// -// items -// -S_ARM1 ARM1 A 6 NULL S_ARM1A -S_ARM1A ARM1 B* 7 NULL S_ARM1 - -S_ARM2 ARM2 A 6 NULL S_ARM2A -S_ARM2A ARM2 B* 6 NULL S_ARM2 - -// -// Innocent barrel - bubbling 2 frames -// -S_BAR1 BAR1 A 6 NULL S_BAR2 -S_BAR2 BAR1 B 6 NULL S_BAR1 - -// -// Barrel explosion -// -S_BEXP BEXP A* 5 NULL S_BEXP2 -S_BEXP2 BEXP B* 5 A_Scream S_BEXP3 -S_BEXP3 BEXP C* 5 NULL S_BEXP4 -S_BEXP4 BEXP D* 10 A_Explode S_BEXP5 -S_BEXP5 BEXP E* 10 NULL S_NULL - -// -// Burning barrel -// -S_BBAR1 FCAN A* 4 NULL S_BBAR2 -S_BBAR2 FCAN B* 4 NULL S_BBAR3 -S_BBAR3 FCAN C* 4 NULL S_BBAR1 - -// -// 2 bonus items -// -S_BON1 BON1 A 6 NULL S_BON1A -S_BON1A BON1 B 6 NULL S_BON1B -S_BON1B BON1 C 6 NULL S_BON1C -S_BON1C BON1 D 6 NULL S_BON1D -S_BON1D BON1 C 6 NULL S_BON1E -S_BON1E BON1 B 6 NULL S_BON1 - -S_BON2 BON2 A 6 NULL S_BON2A -S_BON2A BON2 B 6 NULL S_BON2B -S_BON2B BON2 C 6 NULL S_BON2C -S_BON2C BON2 D 6 NULL S_BON2D -S_BON2D BON2 C 6 NULL S_BON2E -S_BON2E BON2 B 6 NULL S_BON2 - -// -// Blue key -// -S_BKEY BKEY A 10 NULL S_BKEY2 -S_BKEY2 BKEY B* 10 NULL S_BKEY - -// -// Red key -// -S_RKEY RKEY A 10 NULL S_RKEY2 -S_RKEY2 RKEY B* 10 NULL S_RKEY - -// -// Yellow key -// -S_YKEY YKEY A 10 NULL S_YKEY2 -S_YKEY2 YKEY B* 10 NULL S_YKEY - -// -// Blue skull key -// -S_BSKULL BSKU A 10 NULL S_BSKULL2 -S_BSKULL2 BSKU B* 10 NULL S_BSKULL - -// -// Red skull key -// -S_RSKULL RSKU A 10 NULL S_RSKULL2 -S_RSKULL2 RSKU B* 10 NULL S_RSKULL - -// -// Yellow skull key -// -S_YSKULL YSKU A 10 NULL S_YSKULL2 -S_YSKULL2 YSKU B* 10 NULL S_YSKULL - -// -// Health stimpack/medikit -// -S_STIM STIM A -1 NULL S_NULL -S_MEDI MEDI A -1 NULL S_NULL - -// -// Soul Sphere -// -S_SOUL SOUL A* 6 NULL S_SOUL2 -S_SOUL2 SOUL B* 6 NULL S_SOUL3 -S_SOUL3 SOUL C* 6 NULL S_SOUL4 -S_SOUL4 SOUL D* 6 NULL S_SOUL5 -S_SOUL5 SOUL C* 6 NULL S_SOUL6 -S_SOUL6 SOUL B* 6 NULL S_SOUL - -// -// Invincibility -// -S_PINV PINV A* 6 NULL S_PINV2 -S_PINV2 PINV B* 6 NULL S_PINV3 -S_PINV3 PINV C* 6 NULL S_PINV4 -S_PINV4 PINV D* 6 NULL S_PINV - -// -// Strength (Berserk) -// -S_PSTR PSTR A* -1 NULL S_NULL - -// -// Invisibility -// -S_PINS PINS A* 6 NULL S_PINS2 -S_PINS2 PINS B* 6 NULL S_PINS3 -S_PINS3 PINS C* 6 NULL S_PINS4 -S_PINS4 PINS D* 6 NULL S_PINS - -// -// Mega sphere -// -S_MEGA MEGA A* 6 NULL S_MEGA2 -S_MEGA2 MEGA B* 6 NULL S_MEGA3 -S_MEGA3 MEGA C* 6 NULL S_MEGA4 -S_MEGA4 MEGA D* 6 NULL S_MEGA - -// -// Ironfeet (Radiation Shielding) -// -S_SUIT SUIT A* -1 NULL S_NULL -// -// Super Map -// -S_PMAP PMAP A* 6 NULL S_PMAP2 -S_PMAP2 PMAP B* 6 NULL S_PMAP3 -S_PMAP3 PMAP C* 6 NULL S_PMAP4 -S_PMAP4 PMAP D* 6 NULL S_PMAP5 -S_PMAP5 PMAP C* 6 NULL S_PMAP6 -S_PMAP6 PMAP B* 6 NULL S_PMAP - -// -// InfraVisor (Light Amp.) -// -S_PVIS PVIS A* 6 NULL S_PVIS2 -S_PVIS2 PVIS B 6 NULL S_PVIS - -// -// Ammo -// -S_CLIP CLIP A -1 NULL S_NULL -S_AMMO AMMO A -1 NULL S_NULL -S_ROCK ROCK A -1 NULL S_NULL -S_BROK BROK A -1 NULL S_NULL -S_CELL CELL A -1 NULL S_NULL -S_CELP CELP A -1 NULL S_NULL -S_SHEL SHEL A -1 NULL S_NULL -S_SBOX SBOX A -1 NULL S_NULL - -// Backpack -S_BPAK BPAK A -1 NULL S_NULL - -// -// Weapons -// -S_BFUG BFUG A -1 NULL S_NULL -S_MGUN MGUN A -1 NULL S_NULL -S_CSAW CSAW A -1 NULL S_NULL -S_LAUN LAUN A -1 NULL S_NULL -S_PLAS PLAS A -1 NULL S_NULL -S_SHOT SHOT A -1 NULL S_NULL -S_SHOT2 SGN2 A -1 NULL S_NULL - -// -// Freds -// -S_COLU COLU A* -1 NULL S_NULL - -S_STALAG SMT2 A -1 NULL S_NULL - -// Bloody, twitching G.I.Joe -S_BLOODYTWITCH GOR1 A 10 NULL S_BLOODYTWITCH2 -S_BLOODYTWITCH2 GOR1 B 15 NULL S_BLOODYTWITCH3 -S_BLOODYTWITCH3 GOR1 C 8 NULL S_BLOODYTWITCH4 -S_BLOODYTWITCH4 GOR1 B 6 NULL S_BLOODYTWITCH - -// Dead, torso me -S_DEADTORSO PLAY N -1 NULL S_NULL -// Dead, bottom me -S_DEADBOTTOM PLAY S -1 NULL S_NULL -// Fred, Bunch o' heads -S_HEADSONSTICK POL2 A -1 NULL S_NULL -// Dead, gibs -S_GIBS POL5 A -1 NULL S_NULL -// Fred, head on a stick -S_HEADONASTICK POL4 A -1 NULL S_NULL -// Fred, Heads & Candles -S_HEADCANDLES POL3 A* 6 NULL S_HEADCANDLES2 -S_HEADCANDLES2 POL3 B* 6 NULL S_HEADCANDLES -// Fred, on a stick, dead -S_DEADSTICK POL1 A -1 NULL S_NULL -// Fred, on a stick, live -S_LIVESTICK POL6 A 6 NULL S_LIVESTICK2 -S_LIVESTICK2 POL6 B 8 NULL S_LIVESTICK - -S_MEAT2 GOR2 A -1 NULL S_NULL -S_MEAT3 GOR3 A -1 NULL S_NULL -S_MEAT4 GOR4 A -1 NULL S_NULL -S_MEAT5 GOR5 A -1 NULL S_NULL -S_STALAGTITE SMIT A -1 NULL S_NULL -S_TALLGRNCOL COL1 A -1 NULL S_NULL -S_SHRTGRNCOL COL2 A -1 NULL S_NULL -S_TALLREDCOL COL3 A -1 NULL S_NULL -S_SHRTREDCOL COL4 A -1 NULL S_NULL -S_CANDLESTIK CAND A* -1 NULL S_NULL -S_CANDELABRA CBRA A* -1 NULL S_NULL -S_SKULLCOL COL6 A -1 NULL S_NULL -S_TORCHTREE TRE1 A -1 NULL S_NULL -S_BIGTREE TRE2 A -1 NULL S_NULL -S_TECHPILLAR ELEC A -1 NULL S_NULL - -S_EVILEYE CEYE A* 6 NULL S_EVILEYE2 -S_EVILEYE2 CEYE B* 6 NULL S_EVILEYE3 -S_EVILEYE3 CEYE C* 6 NULL S_EVILEYE4 -S_EVILEYE4 CEYE B* 6 NULL S_EVILEYE - -S_FLOATSKULL FSKU A* 6 NULL S_FLOATSKULL2 -S_FLOATSKULL2 FSKU B* 6 NULL S_FLOATSKULL3 -S_FLOATSKULL3 FSKU C* 6 NULL S_FLOATSKULL - -S_HEARTCOL COL5 A 14 NULL S_HEARTCOL2 -S_HEARTCOL2 COL5 B 14 NULL S_HEARTCOL - -S_BLUETORCH TBLU A* 4 NULL S_BLUETORCH2 -S_BLUETORCH2 TBLU B* 4 NULL S_BLUETORCH3 -S_BLUETORCH3 TBLU C* 4 NULL S_BLUETORCH4 -S_BLUETORCH4 TBLU D* 4 NULL S_BLUETORCH - -S_GREENTORCH TGRN A* 4 NULL S_GREENTORCH2 -S_GREENTORCH2 TGRN B* 4 NULL S_GREENTORCH3 -S_GREENTORCH3 TGRN C* 4 NULL S_GREENTORCH4 -S_GREENTORCH4 TGRN D* 4 NULL S_GREENTORCH - -S_REDTORCH TRED A* 4 NULL S_REDTORCH2 -S_REDTORCH2 TRED B* 4 NULL S_REDTORCH3 -S_REDTORCH3 TRED C* 4 NULL S_REDTORCH4 -S_REDTORCH4 TRED D* 4 NULL S_REDTORCH - -S_BTORCHSHRT SMBT A* 4 NULL S_BTORCHSHRT2 -S_BTORCHSHRT2 SMBT B* 4 NULL S_BTORCHSHRT3 -S_BTORCHSHRT3 SMBT C* 4 NULL S_BTORCHSHRT4 -S_BTORCHSHRT4 SMBT D* 4 NULL S_BTORCHSHRT - -S_GTORCHSHRT SMGT A* 4 NULL S_GTORCHSHRT2 -S_GTORCHSHRT2 SMGT B* 4 NULL S_GTORCHSHRT3 -S_GTORCHSHRT3 SMGT C* 4 NULL S_GTORCHSHRT4 -S_GTORCHSHRT4 SMGT D* 4 NULL S_GTORCHSHRT - -S_RTORCHSHRT SMRT A* 4 NULL S_RTORCHSHRT2 -S_RTORCHSHRT2 SMRT B* 4 NULL S_RTORCHSHRT3 -S_RTORCHSHRT3 SMRT C* 4 NULL S_RTORCHSHRT4 -S_RTORCHSHRT4 SMRT D* 4 NULL S_RTORCHSHRT - -S_HANGNOGUTS HDB1 A -1 NULL S_NULL -S_HANGBNOBRAIN HDB2 A -1 NULL S_NULL -S_HANGTLOOKDN HDB3 A -1 NULL S_NULL -S_HANGTSKULL HDB4 A -1 NULL S_NULL -S_HANGTLOOKUP HDB5 A -1 NULL S_NULL -S_HANGTNOBRAIN HDB6 A -1 NULL S_NULL -S_COLONGIBS POB1 A -1 NULL S_NULL -S_SMALLPOOL POB2 A -1 NULL S_NULL -S_BRAINSTEM BRS1 A -1 NULL S_NULL - -// New Tech Lamps (tall) -S_TECHLAMP TLMP A* 4 NULL S_TECHLAMP2 -S_TECHLAMP2 TLMP B* 4 NULL S_TECHLAMP3 -S_TECHLAMP3 TLMP C* 4 NULL S_TECHLAMP4 -S_TECHLAMP4 TLMP D* 4 NULL S_TECHLAMP - -// New Tech Lamps (short) -S_TECH2LAMP TLP2 A* 4 NULL S_TECH2LAMP2 -S_TECH2LAMP2 TLP2 B* 4 NULL S_TECH2LAMP3 -S_TECH2LAMP3 TLP2 C* 4 NULL S_TECH2LAMP4 -S_TECH2LAMP4 TLP2 D* 4 NULL S_TECH2LAMP - - -// BOOM's point pusher and puller -$ MT_PUSH -doomednum 5001 -spawnstate S_MAPSPOT -flags MF_NOBLOCKMAP -flags2 MF2_DONTDRAW - -$ MT_PUSH -doomednum 5002 -spawnstate S_MAPSPOT -flags MF_NOBLOCKMAP -flags2 MF2_DONTDRAW - -// Other types of map spots for ZDoom -$ MT_PATHNODE -doomednum 9024 -spawnstate S_MAPSPOT -flags MF_NOBLOCKMAP -flags2 MF2_DONTDRAW - -$ MT_CAMERA -doomednum 9025 -spawnstate S_MAPSPOT -flags MF_NOBLOCKMAP|MF_NOGRAVITY -flags2 MF2_DONTDRAW - -$ MT_SPARK -doomednum 9026 -spawnstate S_MAPSPOT -flags MF_NOSECTOR|MF_NOBLOCKMAP|MF_NOGRAVITY - -// The fountain is created for types 9027-9033. -$ MT_FOUNTAIN -spawnstate S_MAPSPOT -height 1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -$ MT_TELEPORTMAN2 -doomednum 9044 -flags MF_NOBLOCKMAP|MF2_DONTDRAW - -$ MT_AMBIENT -doomednum 14065 -spawnstate S_AMBIENTSOUND -flags MF_NOBLOCKMAP|MF_NOSECTOR -flags2 MF2_DONTDRAW - -S_AMBIENTSOUND TROO A 1 A_Ambient S_AMBIENTSOUND - -} // end multigen - -//========================================================================== - -// Things that can be spawned with the Thing_Spawn -// and Thing_Projectile specials - -spawnables -{ -MT_SHOTGUY = 1 -MT_CHAINGUY -MT_BRUISER -MT_POSSESSED -MT_TROOP -MT_BABY -MT_SPIDER -MT_SERGEANT -MT_SHADOWS -MT_TROOPSHOT -MT_CLIP -MT_SHELLS -MT_CACODEMON = 19 -MT_UNDEAD -MT_BRIDGE -MT_ARMORBONUS -MT_STIMPACK -MT_MEDIKIT -MT_SOULSPHERE -MT_SHOTGUN = 27 -MT_CHAINGUN -MT_ROCKETLAUNCHER -MT_PLASMAGUN -MT_BFGGUN -MT_CHAINSAW -MT_SUPERSHOTGUN -MT_PLASMA = 51 -MT_TRACER = 53 -MT_ARMOR1 = 68 -MT_ARMOR2 -MT_CELL = 75 -MT_BKEY = 85 -MT_RKEY -MT_YKEY -MT_YSKULL -MT_RSKULL -MT_BSKULL -MT_FIRE = 98 -MT_STEALTHBRUISER = 100 -MT_STEALTHKNIGHT -MT_STEALTHZOMBIE -MT_STEALTHSHOTGUY -MT_SKULL = 110 -MT_VILE -MT_FATSO -MT_HELLKNIGHT -MT_CYBORG -MT_PAIN -MT_WOLFSS -MT_STEALTHBABY -MT_STEALTHVILE -MT_STEALTHHEAD -MT_STEALTHCHAINGUY -MT_STEALTHSERGEANT -MT_STEALTHIMP -MT_STEALTHFATSO -MT_STEALTHUNDEAD -MT_DBARREL -MT_HEADSHOT -MT_ROCKET -MT_BFG -MT_ARACHPLAZ -MT_BLOOD -MT_PUFF -MT_MEGA -MT_INV -MT_STRENGTH -MT_INS -MT_SUIT -MT_MAP -MT_LIGHTAMP -MT_AMMOBOX -MT_ROCKETPICKUP -MT_ROCKETBOX -MT_CELLPACK -MT_SHELLBOX -MT_BACKPACK -MT_GUTS -MT_GIBS -MT_COLONGIBS -MT_SMALLPOOL -MT_BURNINGBARREL -MT_BRAINSTEM -} // end spawnables - -// weapon definitions - -weapons -{ - // { - // - // - // - // - // - // - // - // - // } - - { - "Fist" - NULL - NULL - S_PUNCHUP - S_PUNCHDOWN - S_PUNCH - S_PUNCH1 - S_NULL - } - - { - "Chainsaw" - "A chainsaw! Find some meat!" - NULL - S_SAWUP - S_SAWDOWN - S_SAW - S_SAW1 - S_NULL - } - - { - "Pistol" - NULL - "Bullets" - S_PISTOLUP - S_PISTOLDOWN - S_PISTOL - S_PISTOL1 - S_PISTOLFLASH - } - - { - "Shotgun" - "You got the shotgun!" - "Shells" - S_SGUNUP - S_SGUNDOWN - S_SGUN - S_SGUN1 - S_SGUNFLASH - } - - { - "Super Shotgun" - "You got the super shotgun!" - "Shells" - S_DSGUNUP - S_DSGUNDOWN - S_DSGUN - S_DSGUN1 - S_DSGUNFLASH1 - } - - { - "chaingun" - "You got the chaingun!" - "Bullets" - S_CHAINUP - S_CHAINDOWN - S_CHAIN - S_CHAIN1 - S_CHAINFLASH1 - } - - { - "Rocket Laucher" - "You got the rocket launcher!" - "Rockets" - S_MISSILEUP - S_MISSILEDOWN - S_MISSILE - S_MISSILE1 - S_MISSILEFLASH1 - } - - { - "Plasma Rifle" - "You got the plasma gun!" - "Cells" - S_PLASMAUP - S_PLASMADOWN - S_PLASMA - S_PLASMA1 - S_PLASMAFLASH - } - - { - "BFG 9000" - "You got the BFG9000! Oh, yes." - "Cells" - S_BFGUP - S_BFGDOWN - S_BFG - S_BFG1 - S_BFGFLASH1 - } - -} - -// ammo definitions - -ammo -{ - // { - // name - // pickup message - // big pickup message - // status bar picture - // clipammo (a weapon has two clips) - // maxammo (a backpack doubles this) - //} - - { - "Bullets" - "Picked up a clip." - "Picked up a box of bullets." - CLIPA0 - 10 - 200 - } - - { - "Shells" - "Picked up 4 shotgun shells." - "Picked up a box of shotgun shells." - SHELA0 - 4 - 50 - } - - { - "Cells" - "Picked up an energy cell." - "Picked up an energy cell pack." - CELLA0 - 20 - 300 - } - - { - "Rockets" - "Picked up a rocket." - "Picked up a box of rockets." - ROCKA0 - 1 - 50 - } -} - -// key definitions - -keys -{ - // { - // name - // pickup message - // status bar picture - // id (for ACS_ExecuteLocked and Door_RaiseLocked) - // class (e.g. yellow keycard and yellow skull are in the same class) - // } - - { - "Blue Keycard" - "Picked up a blue keycard." - STKEYS0 - 1 - 0 - } - - { - "Yellow Keycard" - "Picked up a yellow keycard." - STKEYS1 - 2 - 1 - } - - { - "Red Keycard" - "Picked up a red keycard." - STKEYS2 - 3 - 2 - } - - { - "Blue Skull Key" - "Picked up a blue skull key." - STEYS3 - 4 - 0 - } - - { - "Yellow Skull Key" - "Picked up a yellow skull key." - STKEYS4 - 5 - 1 - } - - { - "Red Skull Key" - "Picked up a red skull key." - STKEYS5 - 6 - 2 - } -} \ No newline at end of file diff --git a/code/hexninfo.lmp b/code/hexninfo.lmp deleted file mode 100644 index c6176599ab..0000000000 --- a/code/hexninfo.lmp +++ /dev/null @@ -1,6963 +0,0 @@ -// This file describes the state definitions and info declarations used for -// Hexen. The format of this file is based on the format used by the original -// multigen with modifications to suit the way things are done internally by -// ZDoom. -// -//============================================================================ -// If the first two characters of a line are S_, it is a state definition -// line. Otherwise, it is part of an info declaration. -// -//============================================================================ -// state data is: -// -// statename sprite frame tics action nextstate [optional1] [optional2] -// a * after the frame letter causes full bright -// -//============================================================================ -// An info definition is: -// -// $ MOBJNAME -// field data -// -// if MOBJNAME is +, a new unique name will be generated -// if fieldname starts with str_, it will be made a char * instead of an int -//============================================================================ - -// -// info default MUST be first in file -// - -$ DEFAULT -doomednum -1 //number to spawn this object -spawnstate S_NULL // -spawnhealth 1000 // -seestate S_NULL //when player sighted or enemy shot -seesound "" //also launch sound for missiles -reactiontime 8 //wait time before attacking -attacksound "" // -painstate S_NULL // -painchance 0 //out of 256 -painsound "" // -meleestate S_NULL // -missilestate S_NULL // -crashstate S_NULL // -deathstate S_NULL //also explodestate for missiles -xdeathstate S_NULL //when knocked to -spawnhelath or lower -deathsound "" //also explosion sound for missiles -speed 0 // -radius 20 // -height 16 // -mass 100 // -damage 0 //missile damage in d8s -activesound "" // -flags 0 // -flags2 0 //Heretic/Hexen flags -raisestate S_NULL //vile resurection state -translucency 1 //0=invisible, 1=opaque - - -// when a state cycles to S_NULL, the actor will be removed - -S_NULL MAN1 A -1 NULL S_NULL - -S_FREETARGMOBJ ACLO D 1050 A_FreeTargMobj S_NULL - -// -// map spots -// - -$ MT_MAPSPOT -doomednum 9001 -spawnstate S_MAPSPOT -flags MF_NOBLOCKMAP|MF_NOSECTOR|MF_NOGRAVITY - -$ MT_MAPSPOTGRAVITY -doomednum 9013 -spawnstate S_MAPSPOT -flags2 MF2_DONTDRAW - -S_MAPSPOT TLGL A -1 NULL S_NULL - -// -// traps -// - -$ MT_FIREBALL1 -spawnstate S_FIREBALL1_1 -deathstate S_FIREBALL1_X1 -deathsound Fireball -speed 2 -radius 8 -height 8 -damage 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FIREDAMAGE - -S_FIREBALL1_1 FBL1 A* 4 NULL S_FIREBALL1_2 -S_FIREBALL1_2 FBL1 B* 4 NULL S_FIREBALL1_1 - -S_FIREBALL1_X1 XPL1 A* 4 NULL S_FIREBALL1_X2 -S_FIREBALL1_X2 XPL1 B* 4 NULL S_FIREBALL1_X3 -S_FIREBALL1_X3 XPL1 C* 4 NULL S_FIREBALL1_X4 -S_FIREBALL1_X4 XPL1 D* 4 NULL S_FIREBALL1_X5 -S_FIREBALL1_X5 XPL1 E* 4 NULL S_FIREBALL1_X6 -S_FIREBALL1_X6 XPL1 F* 4 NULL S_NULL - -$ MT_ARROW -spawnstate S_ARROW_1 -deathstate S_ARROW_X1 -speed 6 -radius 8 -height 4 -damage 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -S_ARROW_1 ARRW A -1 NULL S_NULL - -S_ARROW_X1 ARRW A 1 NULL S_NULL - -$ MT_DART -spawnstate S_DART_1 -deathstate S_DART_X1 -speed 6 -radius 8 -height 4 -damage 2 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -S_DART_1 DART A -1 NULL S_NULL - -S_DART_X1 DART A 1 NULL S_NULL - -$ MT_POISONDART -spawnstate S_POISONDART_1 -deathstate S_POISONDART_X1 -speed 6 -radius 8 -height 4 -damage 2 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -S_POISONDART_1 DART A -1 NULL S_NULL - -S_POISONDART_X1 DART A 1 NULL S_NULL - -$ MT_RIPPERBALL -spawnstate S_RIPPERBALL_1 -deathstate S_RIPPERBALL_X1 -speed 6 -radius 8 -height 16 -damage 2 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_RIP - -S_RIPPERBALL_1 RIPP A 3 NULL S_RIPPERBALL_2 -S_RIPPERBALL_2 RIPP B 3 NULL S_RIPPERBALL_3 -S_RIPPERBALL_3 RIPP C 3 NULL S_RIPPERBALL_1 - -S_RIPPERBALL_X1 CFCF Q* 4 NULL S_RIPPERBALL_X2 -S_RIPPERBALL_X2 CFCF R* 3 NULL S_RIPPERBALL_X3 -S_RIPPERBALL_X3 CFCF S* 4 NULL S_RIPPERBALL_X4 -S_RIPPERBALL_X4 CFCF T* 3 NULL S_RIPPERBALL_X5 -S_RIPPERBALL_X5 CFCF U* 4 NULL S_RIPPERBALL_X6 -S_RIPPERBALL_X6 CFCF V* 3 NULL S_RIPPERBALL_X7 -S_RIPPERBALL_X7 CFCF W* 4 NULL S_RIPPERBALL_X8 -S_RIPPERBALL_X8 CFCF X* 3 NULL S_RIPPERBALL_X9 -S_RIPPERBALL_X9 CFCF Y* 4 NULL S_RIPPERBALL_X10 -S_RIPPERBALL_X10 CFCF Z* 3 NULL S_NULL - -$ MT_PROJECTILE_BLADE -spawnstate S_PRJ_BLADE1 -deathstate S_PRJ_BLADE_X1 -speed 6 -radius 6 -height 6 -damage 3 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -S_PRJ_BLADE1 BLAD A -1 NULL S_NULL - -S_PRJ_BLADE_X1 BLAD A 1 NULL S_NULL - -$ MT_ICESHARD -spawnstate S_ICESHARD1 -deathstate S_SHARDFXE1_1 -deathsound MageShardsExplode -speed 25 -radius 13 -height 8 -damage 1 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_ICEDAMAGE - -S_ICESHARD1 SHRD A* 3 NULL S_ICESHARD2 -S_ICESHARD2 SHRD B* 3 NULL S_ICESHARD3 -S_ICESHARD3 SHRD C* 3 NULL S_ICESHARD1 - -// -// fires of many shapes and sizes -// - -$ MT_FLAME_SMALL_TEMP -doomednum 10500 -spawnstate S_FLAME_TSMALL1 -flags2 MF2_NOTELEPORT - -S_FLAME_TSMALL1 FFSM A* 3 NULL S_FLAME_TSMALL2 -S_FLAME_TSMALL2 FFSM B* 3 NULL S_FLAME_TSMALL3 -S_FLAME_TSMALL3 FFSM C* 2 A_FlameCheck S_FLAME_TSMALL4 -S_FLAME_TSMALL4 FFSM C* 2 NULL S_FLAME_TSMALL5 -S_FLAME_TSMALL5 FFSM D* 3 NULL S_FLAME_TSMALL6 -S_FLAME_TSMALL6 FFSM E* 3 A_FlameCheck S_FLAME_TSMALL1 - -$ MT_FLAME_LARGE_TEMP -doomednum 10502 -spawnstate S_FLAME_TLARGE1 -flags2 MF2_NOTELEPORT - -S_FLAME_TLARGE1 FFLG A* 4 NULL S_FLAME_TLARGE2 -S_FLAME_TLARGE2 FFLG B* 4 A_FlameCheck S_FLAME_TLARGE3 -S_FLAME_TLARGE3 FFLG C* 4 NULL S_FLAME_TLARGE4 -S_FLAME_TLARGE4 FFLG D* 4 A_FlameCheck S_FLAME_TLARGE5 -S_FLAME_TLARGE5 FFLG E* 4 NULL S_FLAME_TLARGE6 -S_FLAME_TLARGE6 FFLG F* 4 A_FlameCheck S_FLAME_TLARGE7 -S_FLAME_TLARGE7 FFLG G* 4 NULL S_FLAME_TLARGE8 -S_FLAME_TLARGE8 FFLG H* 4 A_FlameCheck S_FLAME_TLARGE9 -S_FLAME_TLARGE9 FFLG I* 4 NULL S_FLAME_TLARGE10 -S_FLAME_TLARGE10 FFLG J* 4 A_FlameCheck S_FLAME_TLARGE11 -S_FLAME_TLARGE11 FFLG K* 4 NULL S_FLAME_TLARGE12 -S_FLAME_TLARGE12 FFLG L* 4 A_FlameCheck S_FLAME_TLARGE13 -S_FLAME_TLARGE13 FFLG M* 4 NULL S_FLAME_TLARGE14 -S_FLAME_TLARGE14 FFLG N* 4 A_FlameCheck S_FLAME_TLARGE15 -S_FLAME_TLARGE15 FFLG O* 4 NULL S_FLAME_TLARGE16 -S_FLAME_TLARGE16 FFLG P* 4 A_FlameCheck S_FLAME_TLARGE5 - -$ MT_FLAME_SMALL -doomednum 10501 -spawnstate S_FLAME_SMALL1 -flags2 MF2_NOTELEPORT|MF2_DONTDRAW - -// The small flame enters state S_FLAME_SDORM1 when deactivated -S_FLAME_SDORM1 FFSM A 2 NULL S_FLAME_SDORM2 -S_FLAME_SDORM2 FFSM B 2 A_HideThing S_FLAME_SDORM3 -S_FLAME_SDORM3 FFSM C 200 NULL S_FLAME_SDORM3 - -S_FLAME_SMALL1 FFSM A* 3 NULL S_FLAME_SMALL2 -S_FLAME_SMALL2 FFSM A* 3 A_UnHideThing S_FLAME_SMALL3 -S_FLAME_SMALL3 FFSM A* 3 NULL S_FLAME_SMALL4 -S_FLAME_SMALL4 FFSM B* 3 NULL S_FLAME_SMALL5 -S_FLAME_SMALL5 FFSM C* 3 NULL S_FLAME_SMALL6 -S_FLAME_SMALL6 FFSM D* 3 NULL S_FLAME_SMALL7 -S_FLAME_SMALL7 FFSM E* 3 NULL S_FLAME_SMALL3 - -$ MT_FLAME_LARGE -doomednum 10503 -spawnstate S_FLAME_LARGE1 -flags2 MF2_NOTELEPORT|MF2_DONTDRAW - -// S_FLAME_LDORM1 is entered when the large frame is deactivated -S_FLAME_LDORM1 FFLG D 2 NULL S_FLAME_LDORM2 -S_FLAME_LDORM2 FFLG C 2 NULL S_FLAME_LDORM3 -S_FLAME_LDORM3 FFLG B 2 NULL S_FLAME_LDORM4 -S_FLAME_LDORM4 FFLG A 2 A_HideThing S_FLAME_LDORM5 -S_FLAME_LDORM5 FFLG A 200 NULL S_FLAME_LDORM5 - -S_FLAME_LARGE1 FFLG A* 2 NULL S_FLAME_LARGE2 -S_FLAME_LARGE2 FFLG A* 2 A_UnHideThing S_FLAME_LARGE3 -S_FLAME_LARGE3 FFLG A* 4 NULL S_FLAME_LARGE4 -S_FLAME_LARGE4 FFLG B* 4 NULL S_FLAME_LARGE5 -S_FLAME_LARGE5 FFLG C* 4 NULL S_FLAME_LARGE6 -S_FLAME_LARGE6 FFLG D* 4 NULL S_FLAME_LARGE7 -S_FLAME_LARGE7 FFLG E* 4 NULL S_FLAME_LARGE8 -S_FLAME_LARGE8 FFLG F* 4 NULL S_FLAME_LARGE9 -S_FLAME_LARGE9 FFLG G* 4 NULL S_FLAME_LARGE10 -S_FLAME_LARGE10 FFLG H* 4 NULL S_FLAME_LARGE11 -S_FLAME_LARGE11 FFLG I* 4 NULL S_FLAME_LARGE12 -S_FLAME_LARGE12 FFLG J* 4 NULL S_FLAME_LARGE13 -S_FLAME_LARGE13 FFLG K* 4 NULL S_FLAME_LARGE14 -S_FLAME_LARGE14 FFLG L* 4 NULL S_FLAME_LARGE15 -S_FLAME_LARGE15 FFLG M* 4 NULL S_FLAME_LARGE16 -S_FLAME_LARGE16 FFLG N* 4 NULL S_FLAME_LARGE17 -S_FLAME_LARGE17 FFLG O* 4 NULL S_FLAME_LARGE18 -S_FLAME_LARGE18 FFLG P* 4 NULL S_FLAME_LARGE7 - -// -// items / artifacts -// - -$ MT_HEALINGBOTTLE -doomednum 81 -spawnstate S_ITEM_PTN1_1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ITEM_PTN1_1 PTN1 A 3 NULL S_ITEM_PTN1_2 -S_ITEM_PTN1_2 PTN1 B 3 NULL S_ITEM_PTN1_3 -S_ITEM_PTN1_3 PTN1 C 3 NULL S_ITEM_PTN1_1 - -// When an item is picked up and should later respawn, Hexen hides it and -// puts it into the S_HIDESPECIAL1 state. A_RestoreSpecialThing1 makes it -// visible again as an effect, and A_RestoreSpecialThing2 puts it back -// in its spawnstate. - -S_HIDESPECIAL1 ACLO E 1400 NULL S_HIDESPECIAL2 -S_HIDESPECIAL2 ACLO A 4 A_RestoreSpecialThing1 S_HIDESPECIAL3 -S_HIDESPECIAL3 ACLO B 4 NULL S_HIDESPECIAL4 -S_HIDESPECIAL4 ACLO A 4 NULL S_HIDESPECIAL5 -S_HIDESPECIAL5 ACLO B 4 NULL S_HIDESPECIAL6 -S_HIDESPECIAL6 ACLO C 4 NULL S_HIDESPECIAL7 -S_HIDESPECIAL7 ACLO B 4 NULL S_HIDESPECIAL8 -S_HIDESPECIAL8 ACLO C 4 NULL S_HIDESPECIAL9 -S_HIDESPECIAL9 ACLO D 4 NULL S_HIDESPECIAL10 -S_HIDESPECIAL10 ACLO C 4 NULL S_HIDESPECIAL11 -S_HIDESPECIAL11 ACLO D 4 A_RestoreSpecialThing2 S_NULL - -// Dormant artifacts are artifacts that have been picked up in a deathmatch -// game and will later respawn. Which state is used depends on the artifact: -// -// summon maulator, flight => S_DORMANTARTI2_1 -// invulnerability => S_DORMANTARTI3_1 -// everything else => S_DORMANTARTI1_1 -// -// If the artifact should not respawn, then it enters the S_DEADARTI1 state -// instead. It just plays the pickup animation and then removes the mobj. - -S_DORMANTARTI1_1 ACLO D 3 NULL S_DORMANTARTI1_2 -S_DORMANTARTI1_2 ACLO C 3 NULL S_DORMANTARTI1_3 -S_DORMANTARTI1_3 ACLO D 3 NULL S_DORMANTARTI1_4 -S_DORMANTARTI1_4 ACLO C 3 NULL S_DORMANTARTI1_5 -S_DORMANTARTI1_5 ACLO B 3 NULL S_DORMANTARTI1_6 -S_DORMANTARTI1_6 ACLO C 3 NULL S_DORMANTARTI1_7 -S_DORMANTARTI1_7 ACLO B 3 NULL S_DORMANTARTI1_8 -S_DORMANTARTI1_8 ACLO A 3 NULL S_DORMANTARTI1_9 -S_DORMANTARTI1_9 ACLO B 3 NULL S_DORMANTARTI1_10 -S_DORMANTARTI1_10 ACLO A 3 NULL S_DORMANTARTI1_11 -S_DORMANTARTI1_11 ACLO A 1400 A_HideThing S_DORMANTARTI1_12 -S_DORMANTARTI1_12 ACLO A 3 A_UnHideThing S_DORMANTARTI1_13 -S_DORMANTARTI1_13 ACLO B 3 NULL S_DORMANTARTI1_14 -S_DORMANTARTI1_14 ACLO A 3 NULL S_DORMANTARTI1_15 -S_DORMANTARTI1_15 ACLO B 3 NULL S_DORMANTARTI1_16 -S_DORMANTARTI1_16 ACLO C 3 NULL S_DORMANTARTI1_17 -S_DORMANTARTI1_17 ACLO B 3 NULL S_DORMANTARTI1_18 -S_DORMANTARTI1_18 ACLO C 3 NULL S_DORMANTARTI1_19 -S_DORMANTARTI1_19 ACLO D 3 NULL S_DORMANTARTI1_20 -S_DORMANTARTI1_20 ACLO C 3 NULL S_DORMANTARTI1_21 -S_DORMANTARTI1_21 ACLO D 3 A_RestoreArtifact S_NULL - -S_DORMANTARTI2_1 ACLO D 3 NULL S_DORMANTARTI2_2 -S_DORMANTARTI2_2 ACLO C 3 NULL S_DORMANTARTI2_3 -S_DORMANTARTI2_3 ACLO D 3 NULL S_DORMANTARTI2_4 -S_DORMANTARTI2_4 ACLO C 3 NULL S_DORMANTARTI2_5 -S_DORMANTARTI2_5 ACLO B 3 NULL S_DORMANTARTI2_6 -S_DORMANTARTI2_6 ACLO C 3 NULL S_DORMANTARTI2_7 -S_DORMANTARTI2_7 ACLO B 3 NULL S_DORMANTARTI2_8 -S_DORMANTARTI2_8 ACLO A 3 NULL S_DORMANTARTI2_9 -S_DORMANTARTI2_9 ACLO B 3 NULL S_DORMANTARTI2_10 -S_DORMANTARTI2_10 ACLO A 3 NULL S_DORMANTARTI2_11 -S_DORMANTARTI2_11 ACLO A 4200 A_HideThing S_DORMANTARTI2_12 -S_DORMANTARTI2_12 ACLO A 3 A_UnHideThing S_DORMANTARTI2_13 -S_DORMANTARTI2_13 ACLO B 3 NULL S_DORMANTARTI2_14 -S_DORMANTARTI2_14 ACLO A 3 NULL S_DORMANTARTI2_15 -S_DORMANTARTI2_15 ACLO B 3 NULL S_DORMANTARTI2_16 -S_DORMANTARTI2_16 ACLO C 3 NULL S_DORMANTARTI2_17 -S_DORMANTARTI2_17 ACLO B 3 NULL S_DORMANTARTI2_18 -S_DORMANTARTI2_18 ACLO C 3 NULL S_DORMANTARTI2_19 -S_DORMANTARTI2_19 ACLO D 3 NULL S_DORMANTARTI2_20 -S_DORMANTARTI2_20 ACLO C 3 NULL S_DORMANTARTI2_21 -S_DORMANTARTI2_21 ACLO D 3 A_RestoreArtifact S_NULL - -S_DORMANTARTI3_1 ACLO D 3 NULL S_DORMANTARTI3_2 -S_DORMANTARTI3_2 ACLO C 3 NULL S_DORMANTARTI3_3 -S_DORMANTARTI3_3 ACLO D 3 NULL S_DORMANTARTI3_4 -S_DORMANTARTI3_4 ACLO C 3 NULL S_DORMANTARTI3_5 -S_DORMANTARTI3_5 ACLO B 3 NULL S_DORMANTARTI3_6 -S_DORMANTARTI3_6 ACLO C 3 NULL S_DORMANTARTI3_7 -S_DORMANTARTI3_7 ACLO B 3 NULL S_DORMANTARTI3_8 -S_DORMANTARTI3_8 ACLO A 3 NULL S_DORMANTARTI3_9 -S_DORMANTARTI3_9 ACLO B 3 NULL S_DORMANTARTI3_10 -S_DORMANTARTI3_10 ACLO A 3 NULL S_DORMANTARTI3_11 -S_DORMANTARTI3_11 ACLO A 21000 A_HideThing S_DORMANTARTI3_12 -S_DORMANTARTI3_12 ACLO A 3 A_UnHideThing S_DORMANTARTI3_13 -S_DORMANTARTI3_13 ACLO B 3 NULL S_DORMANTARTI3_14 -S_DORMANTARTI3_14 ACLO A 3 NULL S_DORMANTARTI3_15 -S_DORMANTARTI3_15 ACLO B 3 NULL S_DORMANTARTI3_16 -S_DORMANTARTI3_16 ACLO C 3 NULL S_DORMANTARTI3_17 -S_DORMANTARTI3_17 ACLO B 3 NULL S_DORMANTARTI3_18 -S_DORMANTARTI3_18 ACLO C 3 NULL S_DORMANTARTI3_19 -S_DORMANTARTI3_19 ACLO D 3 NULL S_DORMANTARTI3_20 -S_DORMANTARTI3_20 ACLO C 3 NULL S_DORMANTARTI3_21 -S_DORMANTARTI3_21 ACLO D 3 A_RestoreArtifact S_NULL - -S_DEADARTI1 ACLO D 3 NULL S_DEADARTI2 -S_DEADARTI2 ACLO C 3 NULL S_DEADARTI3 -S_DEADARTI3 ACLO D 3 NULL S_DEADARTI4 -S_DEADARTI4 ACLO C 3 NULL S_DEADARTI5 -S_DEADARTI5 ACLO B 3 NULL S_DEADARTI6 -S_DEADARTI6 ACLO C 3 NULL S_DEADARTI7 -S_DEADARTI7 ACLO B 3 NULL S_DEADARTI8 -S_DEADARTI8 ACLO A 3 NULL S_DEADARTI9 -S_DEADARTI9 ACLO B 3 NULL S_DEADARTI10 -S_DEADARTI10 ACLO A 3 NULL S_NULL - -$ MT_HEALTHFLASK -doomednum 82 -spawnstate S_ARTI_PTN2_1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ARTI_PTN2_1 PTN2 A 4 NULL S_ARTI_PTN2_2 -S_ARTI_PTN2_2 PTN2 B 4 NULL S_ARTI_PTN2_3 -S_ARTI_PTN2_3 PTN2 C 4 NULL S_ARTI_PTN2_1 - -$MT_ARTIFLY -doomednum 83 -spawnstate S_ARTI_SOAR1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ARTI_SOAR1 SOAR A 5 NULL S_ARTI_SOAR2 -S_ARTI_SOAR2 SOAR B 5 NULL S_ARTI_SOAR3 -S_ARTI_SOAR3 SOAR C 5 NULL S_ARTI_SOAR4 -S_ARTI_SOAR4 SOAR B 5 NULL S_ARTI_SOAR1 - -$MT_ARTIINVULNERABILITY -doomednum 84 -spawnstate S_ARTI_INVU1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ARTI_INVU1 INVU A 3 NULL S_ARTI_INVU2 -S_ARTI_INVU2 INVU B 3 NULL S_ARTI_INVU3 -S_ARTI_INVU3 INVU C 3 NULL S_ARTI_INVU4 -S_ARTI_INVU4 INVU D 3 NULL S_ARTI_INVU1 - -$MT_SUMMONMAULATOR -doomednum 86 -spawnstate S_ARTI_SUMMON -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ARTI_SUMMON SUMN A 350 NULL S_ARTI_SUMMON - -$MT_SUMMON_FX -spawnstate S_SUMMON_FX1_1 -deathstate S_SUMMON_FX2_1 -speed 20 -flags MF_MISSILE|MF_DROPOFF|MF_NOBLOCKMAP -flags2 MF2_NOTELEPORT - -S_SUMMON_FX1_1 SUMN A 4 NULL S_SUMMON_FX1_1 -S_SUMMON_FX2_1 SUMN A 4 NULL S_SUMMON_FX2_2 -S_SUMMON_FX2_2 SUMN A 4 NULL S_SUMMON_FX2_3 -S_SUMMON_FX2_3 SUMN A 4 A_Summon S_NULL - -// -// thrust floor (spike) things -// - -$MT_THRUSTFLOOR_UP -doomednum 10091 -spawnstate S_THRUSTINIT2_1 -height 128 -flags MF_SOLID -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -// up -S_THRUSTINIT2_1 TSPK A 3 NULL S_THRUSTINIT2_2 -S_THRUSTINIT2_2 TSPK A 4 A_ThrustInitUp S_THRUSTBLOCK - -// bloody, up -S_BTHRUSTINIT2_1 TSPK B 3 NULL S_BTHRUSTINIT2_2 -S_BTHRUSTINIT2_2 TSPK B 4 A_ThrustInitUp S_BTHRUSTBLOCK - -$ MT_THRUSTFLOOR_DOWN -doomednum 10090 -spawnstate S_THRUSTINIT1_1 -height 128 -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP|MF2_DONTDRAW - -// down -S_THRUSTINIT1_1 TSPK A 3 NULL S_THRUSTINIT1_2 -S_THRUSTINIT1_2 TSPK A 4 A_ThrustInitDn S_THRUSTSTAY - -// down, bloody -S_BTHRUSTINIT1_1 TSPK B 3 NULL S_BTHRUSTINIT1_2 -S_BTHRUSTINIT1_2 TSPK B 4 A_ThrustInitDn S_BTHRUSTSTAY - -// activated; moving up -S_THRUSTRAISE1 TSPK A 8 A_ThrustRaise S_THRUSTRAISE2 -S_THRUSTRAISE2 TSPK A 6 A_ThrustRaise S_THRUSTRAISE3 -S_THRUSTRAISE3 TSPK A 4 A_ThrustRaise S_THRUSTRAISE4 -S_THRUSTRAISE4 TSPK A 3 A_ThrustBlock S_THRUSTIMPALE - -// activated; moving up, bloody -S_BTHRUSTRAISE1 TSPK B 8 A_ThrustRaise S_BTHRUSTRAISE2 -S_BTHRUSTRAISE2 TSPK B 6 A_ThrustRaise S_BTHRUSTRAISE3 -S_BTHRUSTRAISE3 TSPK B 4 A_ThrustRaise S_BTHRUSTRAISE4 -S_BTHRUSTRAISE4 TSPK B 3 A_ThrustBlock S_BTHRUSTIMPALE - -// kill anything in the way. makes the spike bloody if necessary -S_THRUSTIMPALE TSPK A 2 A_ThrustImpale S_THRUSTRAISE -S_BTHRUSTIMPALE TSPK B 2 A_ThrustImpale S_BTHRUSTRAISE - -// raise some more -S_THRUSTRAISE TSPK A 2 A_ThrustRaise S_THRUSTRAISE -S_BTHRUSTRAISE TSPK B 2 A_ThrustRaise S_BTHRUSTRAISE - -// become blocking -S_THRUSTBLOCK TSPK A 10 NULL S_THRUSTBLOCK -S_BTHRUSTBLOCK TSPK B 10 NULL S_BTHRUSTBLOCK - -// go back down -S_THRUSTLOWER TSPK A 2 A_ThrustLower S_THRUSTLOWER -S_BTHRUSTLOWER TSPK B 2 A_ThrustLower S_BTHRUSTLOWER - -// wait for another activation -S_THRUSTSTAY TSPK A -1 NULL S_THRUSTSTAY -S_BTHRUSTSTAY TSPK B -1 NULL S_BTHRUSTSTAY - -// -// banishment device -// - -$ MT_TELEPORTOTHER -doomednum 10040 -spawnstate S_ARTI_TELOTHER1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -$ MT_TELOTHER_FX1 -spawnstate S_TELO_FX1 -deathstate S_TELO_FX9 -speed 20 -radius 16 -damage 10001 -flags MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_NOBLOCKMAP -flags2 MF2_NOTELEPORT - -// These other effects are spawned by MT_TELOTHER_FX1 to create the -// consentric circles when a thing is teleported. - -$ MT_TELOTHER_FX2 -spawnstate S_TELO_FX2_1 -deathstate S_TELO_FX9 -speed 16 -radius 16 -damage 10001 -flags MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_NOBLOCKMAP -flags2 MF2_NOTELEPORT - -$ MT_TELOTHER_FX3 -spawnstate S_TELO_FX3_1 -deathstate S_TELO_FX9 -speed 16 -radius 16 -damage 10001 -flags MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_NOBLOCKMAP -flags2 MF2_NOTELEPORT - -$ MT_TELOTHER_FX4 -spawnstate S_TELO_FX4_1 -deathstate S_TELO_FX9 -speed 16 -radius 16 -damage 10001 -flags MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_NOBLOCKMAP -flags2 MF2_NOTELEPORT - -$ MT_TELOTHER_FX5 -spawnstate S_TELO_FX5_1 -deathstate S_TELO_FX9 -speed 16 -radius 16 -damage 10001 -flags MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY|MF_NOBLOCKMAP -flags2 MF2_NOTELEPORT - -S_ARTI_TELOTHER1 TELO A 5 NULL S_ARTI_TELOTHER2 -S_ARTI_TELOTHER2 TELO B 5 NULL S_ARTI_TELOTHER3 -S_ARTI_TELOTHER3 TELO C 5 NULL S_ARTI_TELOTHER4 -S_ARTI_TELOTHER4 TELO D 5 NULL S_ARTI_TELOTHER1 - -S_TELO_FX1 TRNG E* 5 NULL S_TELO_FX2 -S_TELO_FX2 TRNG D* 4 NULL S_TELO_FX3 -S_TELO_FX3 TRNG C* 3 A_TeloSpawnC S_TELO_FX4 -S_TELO_FX4 TRNG B* 3 A_TeloSpawnB S_TELO_FX5 -S_TELO_FX5 TRNG A* 3 A_TeloSpawnA S_TELO_FX6 -S_TELO_FX6 TRNG B* 3 A_TeloSpawnB S_TELO_FX7 -S_TELO_FX7 TRNG C* 3 A_TeloSpawnC S_TELO_FX8 -S_TELO_FX8 TRNG D* 3 A_TeloSpawnD S_TELO_FX3 -S_TELO_FX9 TRNG E* 3 NULL S_NULL - -S_TELO_FX2_1 TRNG B* 4 NULL S_TELO_FX2_2 -S_TELO_FX2_2 TRNG C* 4 NULL S_TELO_FX2_3 -S_TELO_FX2_3 TRNG D* 4 NULL S_TELO_FX2_4 -S_TELO_FX2_4 TRNG C* 4 NULL S_TELO_FX2_5 -S_TELO_FX2_5 TRNG B* 4 NULL S_TELO_FX2_6 -S_TELO_FX2_6 TRNG A* 4 A_CheckTeleRing S_TELO_FX2_1 - -S_TELO_FX3_1 TRNG C* 4 NULL S_TELO_FX3_2 -S_TELO_FX3_2 TRNG D* 4 NULL S_TELO_FX3_3 -S_TELO_FX3_3 TRNG C* 4 NULL S_TELO_FX3_4 -S_TELO_FX3_4 TRNG B* 4 NULL S_TELO_FX3_5 -S_TELO_FX3_5 TRNG A* 4 NULL S_TELO_FX3_6 -S_TELO_FX3_6 TRNG B* 4 A_CheckTeleRing S_TELO_FX3_1 - -S_TELO_FX4_1 TRNG D* 4 NULL S_TELO_FX4_2 -S_TELO_FX4_2 TRNG C* 4 NULL S_TELO_FX4_3 -S_TELO_FX4_3 TRNG B* 4 NULL S_TELO_FX4_4 -S_TELO_FX4_4 TRNG A* 4 NULL S_TELO_FX4_5 -S_TELO_FX4_5 TRNG B* 4 NULL S_TELO_FX4_6 -S_TELO_FX4_6 TRNG C* 4 A_CheckTeleRing S_TELO_FX4_1 - -S_TELO_FX5_1 TRNG C* 4 NULL S_TELO_FX5_2 -S_TELO_FX5_2 TRNG B* 4 NULL S_TELO_FX5_3 -S_TELO_FX5_3 TRNG A* 4 NULL S_TELO_FX5_4 -S_TELO_FX5_4 TRNG B* 4 NULL S_TELO_FX5_5 -S_TELO_FX5_5 TRNG C* 4 NULL S_TELO_FX5_6 -S_TELO_FX5_6 TRNG D* 4 A_CheckTeleRing S_TELO_FX5_1 - -// -// dirt -// - -$ MT_DIRT1 -spawnstate S_DIRT1_1 -deathstate S_DIRT1_D -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT - -S_DIRT1_1 ROCK D 20 NULL S_DIRT1_1 -S_DIRT1_D ROCK D 10 NULL S_NULL - -$ MT_DIRT2 -spawnstate S_DIRT2_1 -deathstate S_DIRT2_D -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT - -S_DIRT2_1 ROCK E 20 NULL S_DIRT2_1 -S_DIRT2_D ROCK E 10 NULL S_NULL - -$ MT_DIRT3 -spawnstate S_DIRT3_1 -deathstate S_DIRT3_D -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT - -S_DIRT3_1 ROCK F 20 NULL S_DIRT3_1 -S_DIRT3_D ROCK F 10 NULL S_NULL - -$ MT_DIRT4 -spawnstate S_DIRT4_1 -deathstate S_DIRT4_D -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT|MF2_LOGRAV - -S_DIRT4_1 ROCK G 20 NULL S_DIRT4_1 -S_DIRT4_D ROCK G 10 NULL S_NULL - -$ MT_DIRT5 -spawnstate S_DIRT5_1 -deathstate S_DIRT5_D -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT|MF2_LOGRAV - -S_DIRT5_1 ROCK H 20 NULL S_DIRT5_1 -S_DIRT5_D ROCK H 10 NULL S_NULL - -$ MT_DIRT6 -spawnstate S_DIRT6_1 -deathstate S_DIRT6_D -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT|MF2_LOGRAV - -S_DIRT6_1 ROCK I 20 NULL S_DIRT6_1 -S_DIRT6_D ROCK I 10 NULL S_NULL - -$ MT_DIRTCLUMP -spawnstate S_DIRTCLUMP1 -flags MF_NOBLOCKMAP -flags2 MF2_NOTELEPORT - -S_DIRTCLUMP1 TSPK C 20 NULL S_DIRTCLUMP1 - -// -// rocks -// - -$ MT_ROCK1 -spawnstate S_ROCK1_1 -deathstate S_ROCK1_D -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT - -S_ROCK1_1 ROCK A 20 NULL S_ROCK1_1 -S_ROCK1_D ROCK A 10 NULL S_NULL - -$ MT_ROCK2 -spawnstate S_ROCK2_1 -deathstate S_ROCK2_D -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT - -S_ROCK2_1 ROCK B 20 NULL S_ROCK2_1 -S_ROCK2_D ROCK B 10 NULL S_NULL - -$ MT_ROCK3 -spawnstate S_ROCK3_1 -deathstate S_ROCK3_D -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT - -S_ROCK3_1 ROCK C 20 NULL S_ROCK3_1 -S_ROCK3_D ROCK C 10 NULL S_NULL - -// -// fog -// - -$ MT_FOGSPAWNER -doomednum 10000 -spawnstate S_SPAWNFOG1 -flags MF_NOBLOCKMAP|MF_NOSECTOR -flags2 MF2_DONTDRAW|MF2_FLOATBOB - -$ MT_FOGPATCHS -doomednum 10001 -spawnstate S_FOGPATCHS1 -deathstate S_FOGPATCHS0 -flags MF_NOBLOCKMAP|MF_FLOAT|MF_NOGRAVITY|MF_NOCLIP -flags2 MF2_NOTELEPORT -translucency 0.33 - -$ MT_FOGPATCHM -doomednum 10002 -spawnstate S_FOGPATCHM1 -deathstate S_FOGPATCHM0 -flags MF_NOBLOCKMAP|MF_FLOAT|MF_NOGRAVITY|MF_NOCLIP -flags2 MF2_NOTELEPORT -translucency 0.33 - -$ MT_FOGPATCHL -doomednum 10003 -spawnstate S_FOGPATCHL1 -deathstate S_FOGPATCHL0 -flags MF_NOBLOCKMAP|MF_FLOAT|MF_NOGRAVITY|MF_NOCLIP -flags2 MF2_NOTELEPORT -translucency 0.33 - - -S_SPAWNFOG1 MAN1 A 20 A_FogSpawn S_SPAWNFOG1 - -S_FOGPATCHS1 FOGS A 7 A_FogMove S_FOGPATCHS2 -S_FOGPATCHS2 FOGS B 7 A_FogMove S_FOGPATCHS3 -S_FOGPATCHS3 FOGS C 7 A_FogMove S_FOGPATCHS4 -S_FOGPATCHS4 FOGS D 7 A_FogMove S_FOGPATCHS5 -S_FOGPATCHS5 FOGS E 7 A_FogMove S_FOGPATCHS1 - -S_FOGPATCHS0 FOGS E 5 NULL S_NULL - -S_FOGPATCHM1 FOGM A 7 A_FogMove S_FOGPATCHM2 -S_FOGPATCHM2 FOGM B 7 A_FogMove S_FOGPATCHM3 -S_FOGPATCHM3 FOGM C 7 A_FogMove S_FOGPATCHM4 -S_FOGPATCHM4 FOGM D 7 A_FogMove S_FOGPATCHM5 -S_FOGPATCHM5 FOGM E 7 A_FogMove S_FOGPATCHM1 - -S_FOGPATCHM0 FOGS A 5 NULL S_FOGPATCHMA -S_FOGPATCHMA FOGS B 5 NULL S_FOGPATCHMB -S_FOGPATCHMB FOGS C 5 NULL S_FOGPATCHMC -S_FOGPATCHMC FOGS D 5 NULL S_FOGPATCHMD -S_FOGPATCHMD FOGS E 5 NULL S_FOGPATCHS0 - -S_FOGPATCHL1 FOGL A 7 A_FogMove S_FOGPATCHL2 -S_FOGPATCHL2 FOGL B 7 A_FogMove S_FOGPATCHL3 -S_FOGPATCHL3 FOGL C 7 A_FogMove S_FOGPATCHL4 -S_FOGPATCHL4 FOGL D 7 A_FogMove S_FOGPATCHL5 -S_FOGPATCHL5 FOGL E 7 A_FogMove S_FOGPATCHL1 - -S_FOGPATCHL0 FOGM A 4 NULL S_FOGPATCHLA -S_FOGPATCHLA FOGM B 4 NULL S_FOGPATCHLB -S_FOGPATCHLB FOGM C 4 NULL S_FOGPATCHLC -S_FOGPATCHLC FOGM D 4 NULL S_FOGPATCHLD -S_FOGPATCHLD FOGM E 4 NULL S_FOGPATCHM0 - -// -// earthquake -// - -$ MT_QUAKE_FOCUS -spawnstate S_QUAKE_ACTIVE1 -flags MF_NOBLOCKMAP|MF_NOSECTOR -flags2 MF2_DONTDRAW - -S_QUAKE_ACTIVE1 MAN1 A 2 A_Quake S_QUAKE_ACTIVE2 -S_QUAKE_ACTIVE2 MAN1 A 1 A_ContMobjSound S_QUAKE_ACTIVE3 -S_QUAKE_ACTIVE3 MAN1 A 2 A_Quake S_QUAKE_ACTIVE4 -S_QUAKE_ACTIVE4 MAN1 A 2 A_Quake S_QUAKE_ACTIVE5 -S_QUAKE_ACTIVE5 MAN1 A 2 A_Quake S_QUAKE_ACTIVE6 -S_QUAKE_ACTIVE6 MAN1 A 2 A_Quake S_QUAKE_ACTIVE7 -S_QUAKE_ACTIVE7 MAN1 A 2 A_Quake S_QUAKE_ACTIVE8 -S_QUAKE_ACTIVE8 MAN1 A 2 A_Quake S_QUAKE_ACTIVE9 -S_QUAKE_ACTIVE9 MAN1 A 2 A_Quake S_QUAKE_ACTIVE0 -S_QUAKE_ACTIVE0 MAN1 A 2 A_Quake S_QUAKE_ACTIVEA -S_QUAKE_ACTIVEA MAN1 A 2 A_Quake S_QUAKE_ACTIVEB -S_QUAKE_ACTIVEB MAN1 A 2 A_Quake S_QUAKE_ACTIVEC -S_QUAKE_ACTIVEC MAN1 A 2 A_Quake S_QUAKE_ACTIVED -S_QUAKE_ACTIVED MAN1 A 2 A_Quake S_QUAKE_ACTIVEE -S_QUAKE_ACTIVEE MAN1 A 2 A_Quake S_QUAKE_ACTIVEF -S_QUAKE_ACTIVEF MAN1 A 2 A_Quake S_QUAKE_ACTIVEG -S_QUAKE_ACTIVEG MAN1 A 2 A_Quake S_QUAKE_ACTIVEH -S_QUAKE_ACTIVEH MAN1 A 2 A_Quake S_QUAKE_ACTIVEI -S_QUAKE_ACTIVEI MAN1 A 2 A_Quake S_QUAKE_ACTIVEJ -S_QUAKE_ACTIVEJ MAN1 A 2 A_Quake S_QUAKE_ACTIVEK -S_QUAKE_ACTIVEK MAN1 A 2 A_Quake S_QUAKE_ACTIVEL -S_QUAKE_ACTIVEL MAN1 A 2 A_Quake S_QUAKE_ACTIVEM -S_QUAKE_ACTIVEM MAN1 A 2 A_Quake S_QUAKE_ACTIVEN -S_QUAKE_ACTIVEN MAN1 A 2 A_Quake S_QUAKE_ACTIVEO -S_QUAKE_ACTIVEO MAN1 A 2 A_Quake S_QUAKE_ACTIVEP -S_QUAKE_ACTIVEP MAN1 A 2 A_Quake S_QUAKE_ACTIVEQ -S_QUAKE_ACTIVEQ MAN1 A 2 A_Quake S_QUAKE_ACTIVER -S_QUAKE_ACTIVER MAN1 A 2 A_Quake S_QUAKE_ACTIVES -S_QUAKE_ACTIVES MAN1 A 2 A_Quake S_QUAKE_ACTIVET -S_QUAKE_ACTIVET MAN1 A 2 A_Quake S_QUAKE_ACTIVEU -S_QUAKE_ACTIVEU MAN1 A 2 A_Quake S_QUAKE_ACTIVEV -S_QUAKE_ACTIVEV MAN1 A 2 A_Quake S_QUAKE_ACTIVEW -S_QUAKE_ACTIVEW MAN1 A 2 A_Quake S_QUAKE_ACTIVEX -S_QUAKE_ACTIVEX MAN1 A 2 A_Quake S_QUAKE_ACTIVEY -S_QUAKE_ACTIVEY MAN1 A 2 A_Quake S_QUAKE_ACTIVEZ -S_QUAKE_ACTIVEZ MAN1 A 2 A_Quake S_QUAKE_ACT1 -S_QUAKE_ACT1 MAN1 A 2 A_Quake S_QUAKE_ACT2 -S_QUAKE_ACT2 MAN1 A 2 A_Quake S_QUAKE_ACT3 -S_QUAKE_ACT3 MAN1 A 2 A_Quake S_QUAKE_ACT4 -S_QUAKE_ACT4 MAN1 A 2 A_Quake S_QUAKE_ACT5 -S_QUAKE_ACT5 MAN1 A 2 A_Quake S_QUAKE_ACT6 -S_QUAKE_ACT6 MAN1 A 2 A_Quake S_QUAKE_ACT7 -S_QUAKE_ACT7 MAN1 A 2 A_Quake S_QUAKE_ACT8 -S_QUAKE_ACT8 MAN1 A 2 A_Quake S_QUAKE_ACT9 -S_QUAKE_ACT9 MAN1 A 2 A_Quake S_QUAKE_ACT0 -S_QUAKE_ACT0 MAN1 A 2 A_Quake S_QUAKE_ACTIVE1 - -// -// stained glass -// - -$ MT_SGSHARD1 -spawnstate S_SGSHARD1_1 -deathstate S_SGSHARD1_D -radius 5 -height 16 -mass 5 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FLOORBOUNCE - -$ MT_SGSHARD2 -spawnstate S_SGSHARD2_1 -deathstate S_SGSHARD2_D -radius 5 -height 16 -mass 5 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FLOORBOUNCE - -$ MT_SGSHARD3 -spawnstate S_SGSHARD3_1 -deathstate S_SGSHARD3_D -radius 5 -height 16 -mass 5 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FLOORBOUNCE - -$ MT_SGSHARD4 -spawnstate S_SGSHARD4_1 -deathstate S_SGSHARD4_D -radius 5 -height 16 -mass 5 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FLOORBOUNCE - -$ MT_SGSHARD5 -spawnstate S_SGSHARD5_1 -deathstate S_SGSHARD5_D -radius 5 -height 16 -mass 5 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FLOORBOUNCE - -$ MT_SGSHARD6 -spawnstate S_SGSHARD6_1 -deathstate S_SGSHARD6_D -radius 5 -height 16 -mass 5 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FLOORBOUNCE - -$ MT_SGSHARD7 -spawnstate S_SGSHARD7_1 -deathstate S_SGSHARD7_D -radius 5 -height 16 -mass 5 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FLOORBOUNCE - -$ MT_SGSHARD8 -spawnstate S_SGSHARD8_1 -deathstate S_SGSHARD8_D -radius 5 -height 16 -mass 5 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FLOORBOUNCE - -$ MT_SGSHARD9 -spawnstate S_SGSHARD9_1 -deathstate S_SGSHARD9_D -radius 5 -height 16 -mass 5 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FLOORBOUNCE - -$ MT_SGSHARD0 -spawnstate S_SGSHARD0_1 -deathstate S_SGSHARD0_D -radius 5 -height 16 -mass 5 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FLOORBOUNCE - - -S_SGSHARD1_1 SGSA A 4 NULL S_SGSHARD1_2 -S_SGSHARD1_2 SGSA B 4 NULL S_SGSHARD1_3 -S_SGSHARD1_3 SGSA C 4 NULL S_SGSHARD1_4 -S_SGSHARD1_4 SGSA D 4 NULL S_SGSHARD1_5 -S_SGSHARD1_5 SGSA E 4 NULL S_SGSHARD1_1 - -S_SGSHARD1_D SGSA E 30 NULL S_NULL - -S_SGSHARD2_1 SGSA F 4 NULL S_SGSHARD2_2 -S_SGSHARD2_2 SGSA G 4 NULL S_SGSHARD2_3 -S_SGSHARD2_3 SGSA H 4 NULL S_SGSHARD2_4 -S_SGSHARD2_4 SGSA I 4 NULL S_SGSHARD2_5 -S_SGSHARD2_5 SGSA J 4 NULL S_SGSHARD2_1 - -S_SGSHARD2_D SGSA J 30 NULL S_NULL - -S_SGSHARD3_1 SGSA K 4 NULL S_SGSHARD3_2 -S_SGSHARD3_2 SGSA L 4 NULL S_SGSHARD3_3 -S_SGSHARD3_3 SGSA M 4 NULL S_SGSHARD3_4 -S_SGSHARD3_4 SGSA N 4 NULL S_SGSHARD3_5 -S_SGSHARD3_5 SGSA O 4 NULL S_SGSHARD3_1 - -S_SGSHARD3_D SGSA O 30 NULL S_NULL - -S_SGSHARD4_1 SGSA P 4 NULL S_SGSHARD4_2 -S_SGSHARD4_2 SGSA Q 4 NULL S_SGSHARD4_3 -S_SGSHARD4_3 SGSA R 4 NULL S_SGSHARD4_4 -S_SGSHARD4_4 SGSA S 4 NULL S_SGSHARD4_5 -S_SGSHARD4_5 SGSA T 4 NULL S_SGSHARD4_1 - -S_SGSHARD4_D SGSA T 30 NULL S_NULL - -S_SGSHARD5_1 SGSA U 4 NULL S_SGSHARD5_2 -S_SGSHARD5_2 SGSA V 4 NULL S_SGSHARD5_3 -S_SGSHARD5_3 SGSA W 4 NULL S_SGSHARD5_4 -S_SGSHARD5_4 SGSA X 4 NULL S_SGSHARD5_5 -S_SGSHARD5_5 SGSA Y 4 NULL S_SGSHARD5_1 - -S_SGSHARD5_D SGSA Y 30 NULL S_NULL - -S_SGSHARD6_1 SGSB A 4 NULL S_SGSHARD6_1 -S_SGSHARD6_D SGSB A 30 NULL S_NULL - -S_SGSHARD7_1 SGSB B 4 NULL S_SGSHARD7_1 -S_SGSHARD7_D SGSB B 30 NULL S_NULL - -S_SGSHARD8_1 SGSB C 4 NULL S_SGSHARD8_1 -S_SGSHARD8_D SGSB C 30 NULL S_NULL - -S_SGSHARD9_1 SGSB D 4 NULL S_SGSHARD9_1 -S_SGSHARD9_D SGSB D 30 NULL S_NULL - -S_SGSHARD0_1 SGSB E 4 NULL S_SGSHARD0_1 -S_SGSHARD0_D SGSB E 30 NULL S_NULL - -// -// porkalator -// - -$ MT_ARTIEGG -doomednum 30 -spawnstate S_ARTI_EGGC1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -$ MT_EGGFX -spawnstate S_EGGFX1 -deathstate S_EGGFXI1_1 -speed 18 -radius 8 -height 8 -damage 1 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - - -S_ARTI_EGGC1 PORK A 5 NULL S_ARTI_EGGC2 -S_ARTI_EGGC2 PORK B 5 NULL S_ARTI_EGGC3 -S_ARTI_EGGC3 PORK C 5 NULL S_ARTI_EGGC4 -S_ARTI_EGGC4 PORK D 5 NULL S_ARTI_EGGC5 -S_ARTI_EGGC5 PORK E 5 NULL S_ARTI_EGGC6 -S_ARTI_EGGC6 PORK F 5 NULL S_ARTI_EGGC7 -S_ARTI_EGGC7 PORK G 5 NULL S_ARTI_EGGC8 -S_ARTI_EGGC8 PORK H 5 NULL S_ARTI_EGGC1 - -S_EGGFX1 EGGM A 4 NULL S_EGGFX2 -S_EGGFX2 EGGM B 4 NULL S_EGGFX3 -S_EGGFX3 EGGM C 4 NULL S_EGGFX4 -S_EGGFX4 EGGM D 4 NULL S_EGGFX5 -S_EGGFX5 EGGM E 4 NULL S_EGGFX1 - -S_EGGFXI1_1 FHFX I* 3 NULL S_EGGFXI1_2 -S_EGGFXI1_2 FHFX J* 3 NULL S_EGGFXI1_3 -S_EGGFXI1_3 FHFX K* 3 NULL S_EGGFXI1_4 -S_EGGFXI1_4 FHFX L* 3 NULL S_NULL - -// -// super health -// - -$ MT_ARTISUPERHEAL -doomednum 32 -spawnstate S_ARTI_SPHL1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ARTI_SPHL1 SPHL A 350 NULL S_ARTI_SPHL1 - -// -// winged statue (headless) -// - -$ MT_ZWINGEDSTATUENOSKULL -doomednum 9011 -spawnstate S_ZWINGEDSTATUENOSKULL -radius 10 -height 62 -flags MF_SOLID - -S_ZWINGEDSTATUENOSKULL STWN A -1 NULL S_NULL -S_ZWINGEDSTATUENOSKULL2 STWN B -1 NULL S_NULL - -// gem pedestal - -$ MT_ZGEMPEDESTAL -doomednum 9012 -spawnstate S_ZGEMPEDESTAL1 -radius 10 -height 40 -flags MF_SOLID - -S_ZGEMPEDESTAL1 GMPD A -1 NULL S_NULL -S_ZGEMPEDESTAL2 GMPD B -1 NULL S_NULL - -// -// puzzle items -// - -$ MT_ARTIPUZZSKULL -doomednum 9002 -spawnstate S_ARTIPUZZSKULL -flags MF_SPECIAL|MF_NOGRAVITY - -S_ARTIPUZZSKULL ASKU A -1 NULL S_NULL - -$ MT_ARTIPUZZGEMBIG -doomednum 9003 -spawnstate S_ARTIPUZZGEMBIG -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_ARTIPUZZGEMRED -doomednum 9004 -spawnstate S_ARTIPUZZGEMRED -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_ARTIPUZZGEMGREEN1 -doomednum 9005 -spawnstate S_ARTIPUZZGEMGREEN1 -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_ARTIPUZZGEMGREEN2 -doomednum 9009 -spawnstate S_ARTIPUZZGEMGREEN2 -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_ARTIPUZZGEMBLUE1 -doomednum 9006 -spawnstate S_ARTIPUZZGEMBLUE1 -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_ARTIPUZZGEMBLUE2 -doomednum 9010 -spawnstate S_ARTIPUZZGEMBLUE2 -flags MF_SPECIAL|MF_NOGRAVITY - - -S_ARTIPUZZGEMBIG ABGM A -1 NULL S_NULL - -S_ARTIPUZZGEMRED AGMR A -1 NULL S_NULL - -S_ARTIPUZZGEMGREEN1 AGMG A -1 NULL S_NULL - -S_ARTIPUZZGEMGREEN2 AGG2 A -1 NULL S_NULL - -S_ARTIPUZZGEMBLUE1 AGMB A -1 NULL S_NULL - -S_ARTIPUZZGEMBLUE2 AGB2 A -1 NULL S_NULL - - -$ MT_ARTIPUZZBOOK1 -doomednum 9007 -spawnstate S_ARTIPUZZBOOK1 -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_ARTIPUZZBOOK2 -doomednum 9008 -spawnstate S_ARTIPUZZBOOK2 -flags MF_SPECIAL|MF_NOGRAVITY - - -S_ARTIPUZZBOOK1 ABK1 A -1 NULL S_NULL - -S_ARTIPUZZBOOK2 ABK2 A -1 NULL S_NULL - - -$ MT_ARTIPUZZSKULL2 -doomednum 9014 -spawnstate S_ARTIPUZZSKULL2 -flags MF_SPECIAL|MF_NOGRAVITY - -S_ARTIPUZZSKULL2 ASK2 A -1 NULL S_NULL - - -$ MT_ARTIPUZZFWEAPON -doomednum 9015 -spawnstate S_ARTIPUZZFWEAPON -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_ARTIPUZZCWEAPON -doomednum 9016 -spawnstate S_ARTIPUZZCWEAPON -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_ARTIPUZZMWEAPON -doomednum 9017 -spawnstate S_ARTIPUZZMWEAPON -flags MF_SPECIAL|MF_NOGRAVITY - -S_ARTIPUZZFWEAPON AFWP A -1 NULL S_NULL - -S_ARTIPUZZCWEAPON ACWP A -1 NULL S_NULL - -S_ARTIPUZZMWEAPON AMWP A -1 NULL S_NULL - - -$ MT_ARTIPUZZGEAR -doomednum 9018 -spawnstate S_ARTIPUZZGEAR_1 -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_ARTIPUZZGEAR2 -doomednum 9019 -spawnstate S_ARTIPUZZGEAR2_1 -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_ARTIPUZZGEAR3 -doomednum 9020 -spawnstate S_ARTIPUZZGEAR3_1 -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_ARTIPUZZGEAR4 -doomednum 9021 -spawnstate S_ARTIPUZZGEAR4_1 -flags MF_SPECIAL|MF_NOGRAVITY - - -S_ARTIPUZZGEAR_1 AGER A* 4 NULL S_ARTIPUZZGEAR_2 -S_ARTIPUZZGEAR_2 AGER B* 4 NULL S_ARTIPUZZGEAR_3 -S_ARTIPUZZGEAR_3 AGER C* 4 NULL S_ARTIPUZZGEAR_4 -S_ARTIPUZZGEAR_4 AGER D* 4 NULL S_ARTIPUZZGEAR_5 -S_ARTIPUZZGEAR_5 AGER E* 4 NULL S_ARTIPUZZGEAR_6 -S_ARTIPUZZGEAR_6 AGER F* 4 NULL S_ARTIPUZZGEAR_7 -S_ARTIPUZZGEAR_7 AGER G* 4 NULL S_ARTIPUZZGEAR_8 -S_ARTIPUZZGEAR_8 AGER H* 4 NULL S_ARTIPUZZGEAR_1 - -S_ARTIPUZZGEAR2_1 AGR2 A* 4 NULL S_ARTIPUZZGEAR2_2 -S_ARTIPUZZGEAR2_2 AGR2 B* 4 NULL S_ARTIPUZZGEAR2_3 -S_ARTIPUZZGEAR2_3 AGR2 C* 4 NULL S_ARTIPUZZGEAR2_4 -S_ARTIPUZZGEAR2_4 AGR2 D* 4 NULL S_ARTIPUZZGEAR2_5 -S_ARTIPUZZGEAR2_5 AGR2 E* 4 NULL S_ARTIPUZZGEAR2_6 -S_ARTIPUZZGEAR2_6 AGR2 F* 4 NULL S_ARTIPUZZGEAR2_7 -S_ARTIPUZZGEAR2_7 AGR2 G* 4 NULL S_ARTIPUZZGEAR2_8 -S_ARTIPUZZGEAR2_8 AGR2 H* 4 NULL S_ARTIPUZZGEAR2_1 - -S_ARTIPUZZGEAR3_1 AGR3 A* 4 NULL S_ARTIPUZZGEAR3_2 -S_ARTIPUZZGEAR3_2 AGR3 B* 4 NULL S_ARTIPUZZGEAR3_3 -S_ARTIPUZZGEAR3_3 AGR3 C* 4 NULL S_ARTIPUZZGEAR3_4 -S_ARTIPUZZGEAR3_4 AGR3 D* 4 NULL S_ARTIPUZZGEAR3_5 -S_ARTIPUZZGEAR3_5 AGR3 E* 4 NULL S_ARTIPUZZGEAR3_6 -S_ARTIPUZZGEAR3_6 AGR3 F* 4 NULL S_ARTIPUZZGEAR3_7 -S_ARTIPUZZGEAR3_7 AGR3 G* 4 NULL S_ARTIPUZZGEAR3_8 -S_ARTIPUZZGEAR3_8 AGR3 H* 4 NULL S_ARTIPUZZGEAR3_1 - -S_ARTIPUZZGEAR4_1 AGR4 A* 4 NULL S_ARTIPUZZGEAR4_2 -S_ARTIPUZZGEAR4_2 AGR4 B* 4 NULL S_ARTIPUZZGEAR4_3 -S_ARTIPUZZGEAR4_3 AGR4 C* 4 NULL S_ARTIPUZZGEAR4_4 -S_ARTIPUZZGEAR4_4 AGR4 D* 4 NULL S_ARTIPUZZGEAR4_5 -S_ARTIPUZZGEAR4_5 AGR4 E* 4 NULL S_ARTIPUZZGEAR4_6 -S_ARTIPUZZGEAR4_6 AGR4 F* 4 NULL S_ARTIPUZZGEAR4_7 -S_ARTIPUZZGEAR4_7 AGR4 G* 4 NULL S_ARTIPUZZGEAR4_8 -S_ARTIPUZZGEAR4_8 AGR4 H* 4 NULL S_ARTIPUZZGEAR4_1 - - -// -// more artifacts (not puzzle pieces) -// - -$ MT_ARTITORCH -doomednum 33 -spawnstate S_ARTI_TRCH1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ARTI_TRCH1 TRCH A* 3 NULL S_ARTI_TRCH2 -S_ARTI_TRCH2 TRCH B* 3 NULL S_ARTI_TRCH3 -S_ARTI_TRCH3 TRCH C* 3 NULL S_ARTI_TRCH1 - - -// A fire bomb is produced when a mage uses a flechette -$ MT_FIREBOMB -spawnstate S_FIREBOMB1 -deathsound FlechetteExplode -flags MF_NOGRAVITY -flags2 MF2_FIREDAMAGE -translucency 0.66 - -S_FIREBOMB1 PSBG A 20 NULL S_FIREBOMB2 -S_FIREBOMB2 PSBG A 10 NULL S_FIREBOMB3 -S_FIREBOMB3 PSBG A 10 NULL S_FIREBOMB4 -S_FIREBOMB4 PSBG B 4 NULL S_FIREBOMB5 -S_FIREBOMB5 PSBG C 4 A_Scream S_FIREBOMB6 -S_FIREBOMB6 XPL1 A* 4 A_Explode S_FIREBOMB7 -S_FIREBOMB7 XPL1 B* 4 NULL S_FIREBOMB8 -S_FIREBOMB8 XPL1 C* 4 NULL S_FIREBOMB9 -S_FIREBOMB9 XPL1 D* 4 NULL S_FIREBOMB10 -S_FIREBOMB10 XPL1 E* 4 NULL S_FIREBOMB11 -S_FIREBOMB11 XPL1 F* 4 NULL S_NULL - - -$ MT_ARTITELEPORT -doomednum 36 -spawnstate S_ARTI_ATLP1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ARTI_ATLP1 ATLP A 4 NULL S_ARTI_ATLP2 -S_ARTI_ATLP2 ATLP B 4 NULL S_ARTI_ATLP3 -S_ARTI_ATLP3 ATLP C 4 NULL S_ARTI_ATLP4 -S_ARTI_ATLP4 ATLP B 4 NULL S_ARTI_ATLP1 - - -$ MT_ARTIPOISONBAG -doomednum 8000 -spawnstate S_ARTI_PSBG1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ARTI_PSBG1 PSBG A -1 NULL S_NULL - - -$ MT_POISONBAG -spawnstate S_POISONBAG1 -radius 5 -height 5 -flags MF_NOGRAVITY|MF_NOBLOCKMAP - -$ MT_POISONCLOUD -spawnstate S_POISONCLOUD1 -deathsound PoisonShroomDeath -radius 1 -height 1 -mass 0x7fffffff -flags MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIP|MF_DROPOFF -flags2 MF2_NODMGTHRUST -translucency 0.33 - -S_POISONBAG1 PSBG A* 18 NULL S_POISONBAG2 -S_POISONBAG2 PSBG B* 4 NULL S_POISONBAG3 -S_POISONBAG3 PSBG C 3 NULL S_POISONBAG4 -S_POISONBAG4 PSBG C 1 A_PoisonBagInit S_NULL - -S_POISONCLOUD1 PSBG D 1 NULL S_POISONCLOUD2 -S_POISONCLOUD2 PSBG D 1 A_Scream S_POISONCLOUD3 -S_POISONCLOUD3 PSBG D 2 A_PoisonBagDamage S_POISONCLOUD4 -S_POISONCLOUD4 PSBG E 2 A_PoisonBagDamage S_POISONCLOUD5 -S_POISONCLOUD5 PSBG E 2 A_PoisonBagDamage S_POISONCLOUD6 -S_POISONCLOUD6 PSBG E 2 A_PoisonBagDamage S_POISONCLOUD7 -S_POISONCLOUD7 PSBG F 2 A_PoisonBagDamage S_POISONCLOUD8 -S_POISONCLOUD8 PSBG F 2 A_PoisonBagDamage S_POISONCLOUD9 -S_POISONCLOUD9 PSBG F 2 A_PoisonBagDamage S_POISONCLOUD10 -S_POISONCLOUD10 PSBG G 2 A_PoisonBagDamage S_POISONCLOUD11 -S_POISONCLOUD11 PSBG G 2 A_PoisonBagDamage S_POISONCLOUD12 -S_POISONCLOUD12 PSBG G 2 A_PoisonBagDamage S_POISONCLOUD13 -S_POISONCLOUD13 PSBG H 2 A_PoisonBagDamage S_POISONCLOUD14 -S_POISONCLOUD14 PSBG H 2 A_PoisonBagDamage S_POISONCLOUD15 -S_POISONCLOUD15 PSBG H 2 A_PoisonBagDamage S_POISONCLOUD16 -S_POISONCLOUD16 PSBG I 2 A_PoisonBagDamage S_POISONCLOUD17 -S_POISONCLOUD17 PSBG I 1 A_PoisonBagDamage S_POISONCLOUD18 -S_POISONCLOUD18 PSBG I 1 A_PoisonBagCheck S_POISONCLOUD4 - -S_POISONCLOUD_X1 PSBG H 7 NULL S_POISONCLOUD_X2 -S_POISONCLOUD_X2 PSBG G 7 NULL S_POISONCLOUD_X3 -S_POISONCLOUD_X3 PSBG F 6 NULL S_POISONCLOUD_X4 -S_POISONCLOUD_X4 PSBG D 6 NULL S_NULL - - -$ MT_THROWINGBOMB -spawnstate S_THROWINGBOMB1 -deathstate S_THROWINGBOMB_X1 -seesound FlechetteBounce -deathsound FlechetteExplode -spawnhealth 48 -speed 12 -radius 8 -height 10 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_FLOORBOUNCE|MF2_FIREDAMAGE - -S_THROWINGBOMB1 THRW A 4 A_CheckThrowBomb S_THROWINGBOMB2 -S_THROWINGBOMB2 THRW B 3 A_CheckThrowBomb S_THROWINGBOMB3 -S_THROWINGBOMB3 THRW C 3 A_CheckThrowBomb S_THROWINGBOMB4 -S_THROWINGBOMB4 THRW D 3 A_CheckThrowBomb S_THROWINGBOMB5 -S_THROWINGBOMB5 THRW E 3 A_CheckThrowBomb S_THROWINGBOMB6 -S_THROWINGBOMB6 THRW F 3 A_CheckThrowBomb S_THROWINGBOMB1 -S_THROWINGBOMB7 THRW G 6 A_CheckThrowBomb S_THROWINGBOMB8 -S_THROWINGBOMB8 THRW F 4 A_CheckThrowBomb S_THROWINGBOMB9 -S_THROWINGBOMB9 THRW H 6 A_CheckThrowBomb S_THROWINGBOMB10 -S_THROWINGBOMB10 THRW F 4 A_CheckThrowBomb S_THROWINGBOMB11 -S_THROWINGBOMB11 THRW G 6 A_CheckThrowBomb S_THROWINGBOMB12 -S_THROWINGBOMB12 THRW F 3 A_CheckThrowBomb S_THROWINGBOMB12 - -S_THROWINGBOMB_X1 CFCF Q* 4 A_NoGravity S_THROWINGBOMB_X2 -S_THROWINGBOMB_X2 CFCF R* 3 A_Scream S_THROWINGBOMB_X3 -S_THROWINGBOMB_X3 CFCF S* 4 A_Explode S_THROWINGBOMB_X4 -S_THROWINGBOMB_X4 CFCF T* 3 NULL S_THROWINGBOMB_X5 -S_THROWINGBOMB_X5 CFCF U* 4 NULL S_THROWINGBOMB_X6 -S_THROWINGBOMB_X6 CFCF W* 3 NULL S_THROWINGBOMB_X7 -S_THROWINGBOMB_X7 CFCF X* 4 NULL S_THROWINGBOMB_X8 -S_THROWINGBOMB_X8 CFCF Z* 3 NULL S_NULL - - -$ MT_SPEEDBOOTS -doomednum 8002 -spawnstate S_ARTI_BOOTS1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ARTI_BOOTS1 SPED A* 3 NULL S_ARTI_BOOTS2 -S_ARTI_BOOTS2 SPED B* 3 NULL S_ARTI_BOOTS3 -S_ARTI_BOOTS3 SPED C* 3 NULL S_ARTI_BOOTS4 -S_ARTI_BOOTS4 SPED D* 3 NULL S_ARTI_BOOTS5 -S_ARTI_BOOTS5 SPED E* 3 NULL S_ARTI_BOOTS6 -S_ARTI_BOOTS6 SPED F* 3 NULL S_ARTI_BOOTS7 -S_ARTI_BOOTS7 SPED G* 3 NULL S_ARTI_BOOTS8 -S_ARTI_BOOTS8 SPED H* 3 NULL S_ARTI_BOOTS1 - - -$ MT_BOOSTMANA -doomednum 8003 -spawnstate S_ARTI_MANA -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ARTI_MANA BMAN A* -1 NULL S_NULL - - -$ MT_BOOSTARMOR -doomednum 8041 -spawnstate S_ARTI_ARMOR1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ARTI_ARMOR1 BRAC A* 4 NULL S_ARTI_ARMOR2 -S_ARTI_ARMOR2 BRAC B* 4 NULL S_ARTI_ARMOR3 -S_ARTI_ARMOR3 BRAC C* 4 NULL S_ARTI_ARMOR4 -S_ARTI_ARMOR4 BRAC D* 4 NULL S_ARTI_ARMOR5 -S_ARTI_ARMOR5 BRAC E* 4 NULL S_ARTI_ARMOR6 -S_ARTI_ARMOR6 BRAC F* 4 NULL S_ARTI_ARMOR7 -S_ARTI_ARMOR7 BRAC G* 4 NULL S_ARTI_ARMOR8 -S_ARTI_ARMOR8 BRAC H* 4 NULL S_ARTI_ARMOR1 - - -$ MT_BLASTRADIUS -doomednum 10110 -spawnstate S_ARTI_BLAST1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ARTI_BLAST1 BLST A* 4 NULL S_ARTI_BLAST2 -S_ARTI_BLAST2 BLST B* 4 NULL S_ARTI_BLAST3 -S_ARTI_BLAST3 BLST C* 4 NULL S_ARTI_BLAST4 -S_ARTI_BLAST4 BLST D* 4 NULL S_ARTI_BLAST5 -S_ARTI_BLAST5 BLST E* 4 NULL S_ARTI_BLAST6 -S_ARTI_BLAST6 BLST F* 4 NULL S_ARTI_BLAST7 -S_ARTI_BLAST7 BLST G* 4 NULL S_ARTI_BLAST8 -S_ARTI_BLAST8 BLST H* 4 NULL S_ARTI_BLAST1 - - -$ MT_HEALRADIUS -doomednum 10120 -spawnstate S_ARTI_HEALRAD1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ARTI_HEALRAD1 HRAD A* 4 NULL S_ARTI_HEALRAD2 -S_ARTI_HEALRAD2 HRAD B* 4 NULL S_ARTI_HEALRAD3 -S_ARTI_HEALRAD3 HRAD C* 4 NULL S_ARTI_HEALRAD4 -S_ARTI_HEALRAD4 HRAD D* 4 NULL S_ARTI_HEALRAD5 -S_ARTI_HEALRAD5 HRAD E* 4 NULL S_ARTI_HEALRAD6 -S_ARTI_HEALRAD6 HRAD F* 4 NULL S_ARTI_HEALRAD7 -S_ARTI_HEALRAD7 HRAD G* 4 NULL S_ARTI_HEALRAD8 -S_ARTI_HEALRAD8 HRAD H* 4 NULL S_ARTI_HEALRAD9 -S_ARTI_HEALRAD9 HRAD I* 4 NULL S_ARTI_HEALRAD0 -S_ARTI_HEALRAD0 HRAD J* 4 NULL S_ARTI_HEALRADA -S_ARTI_HEALRADA HRAD K* 4 NULL S_ARTI_HEALRADB -S_ARTI_HEALRADB HRAD L* 4 NULL S_ARTI_HEALRADC -S_ARTI_HEALRADC HRAD M* 4 NULL S_ARTI_HEALRADD -S_ARTI_HEALRADD HRAD N* 4 NULL S_ARTI_HEALRADE -S_ARTI_HEALRADE HRAD O* 4 NULL S_ARTI_HEALRADF -S_ARTI_HEALRADF HRAD P* 4 NULL S_ARTI_HEALRAD1 - -// -// environment effects -// - -$ MT_SPLASH -spawnstate S_SPLASH1 -deathstatk S_SPLASHX -radius 2 -height 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH - -$ MT_SPLASHBASE -spawnstate S_SPLASHBASE1 -flags MF_NOBLOCKMAP - -$ MT_LAVASPLASH -spawnstate S_LAVASPLASH1 -flags MF_NOBLOCKMAP - -$ MT_LAVASMOKE -spawnstate S_LAVASMOKE1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.33 - -$ MT_SLUDGECHUNK -spawnstate S_SLUDGECHUNK1 -deathstate S_SLUDGECHUNKX -radius 2 -height 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH - -$ MT_SLUDGESPLASH -spawnstate S_SLUDGESPLASH1 -flags MF_NOBLOCKMAP - -S_SPLASH1 SPSH A 8 NULL S_SPLASH2 -S_SPLASH2 SPSH B 8 NULL S_SPLASH3 -S_SPLASH3 SPSH C 8 NULL S_SPLASH4 -S_SPLASH4 SPSH D 16 NULL S_NULL - -S_SPLASHX SPSH D 10 NULL S_NULL - -S_SPLASHBASE1 SPSH E 5 NULL S_SPLASHBASE2 -S_SPLASHBASE2 SPSH F 5 NULL S_SPLASHBASE3 -S_SPLASHBASE3 SPSH G 5 NULL S_SPLASHBASE4 -S_SPLASHBASE4 SPSH H 5 NULL S_SPLASHBASE5 -S_SPLASHBASE5 SPSH I 5 NULL S_SPLASHBASE6 -S_SPLASHBASE6 SPSH J 5 NULL S_SPLASHBASE7 -S_SPLASHBASE7 SPSH K 5 NULL S_NULL - -S_LAVASPLASH1 LVAS A* 5 NULL S_LAVASPLASH2 -S_LAVASPLASH2 LVAS B* 5 NULL S_LAVASPLASH3 -S_LAVASPLASH3 LVAS C* 5 NULL S_LAVASPLASH4 -S_LAVASPLASH4 LVAS D* 5 NULL S_LAVASPLASH5 -S_LAVASPLASH5 LVAS E* 5 NULL S_LAVASPLASH6 -S_LAVASPLASH6 LVAS F* 5 NULL S_NULL - -S_LAVASMOKE1 LVAS G* 5 NULL S_LAVASMOKE2 -S_LAVASMOKE2 LVAS H* 5 NULL S_LAVASMOKE3 -S_LAVASMOKE3 LVAS I* 5 NULL S_LAVASMOKE4 -S_LAVASMOKE4 LVAS J* 5 NULL S_LAVASMOKE5 -S_LAVASMOKE5 LVAS K* 5 NULL S_NULL - -S_SLUDGECHUNK1 SLDG A 8 NULL S_SLUDGECHUNK2 -S_SLUDGECHUNK2 SLDG B 8 NULL S_SLUDGECHUNK3 -S_SLUDGECHUNK3 SLDG C 8 NULL S_SLUDGECHUNK4 -S_SLUDGECHUNK4 SLDG D 8 NULL S_NULL - -S_SLUDGECHUNKX SLDG D 6 NULL S_NULL - -S_SLUDGESPLASH1 SLDG E 6 NULL S_SLUDGESPLASH2 -S_SLUDGESPLASH2 SLDG F 6 NULL S_SLUDGESPLASH3 -S_SLUDGESPLASH3 SLDG G 6 NULL S_SLUDGESPLASH4 -S_SLUDGESPLASH4 SLDG H 6 NULL S_NULL - - -// -// miscellaneous scenery -// - -$ + -doomednum 5 -spawnstate S_ZWINGEDSTATUE1 -radius 10 -height 62 -flags MF_SOLID - -S_ZWINGEDSTATUE1 STTW A -1 NULL S_NULL - -$ + doomednum 6 spawnstate S_ZROCK1_1 -$ + doomednum 7 spawnstate S_ZROCK2_1 -$ + doomednum 9 spawnstate S_ZROCK3_1 -$ + doomednum 15 spawnstate S_ZROCK4_1 flags MF_SOLID - -S_ZROCK1_1 RCK1 A -1 NULL S_NULL -S_ZROCK2_1 RCK2 A -1 NULL S_NULL -S_ZROCK3_1 RCK3 A -1 NULL S_NULL -S_ZROCK4_1 RCK4 A -1 NULL S_NULL - - -$ + -doomednum 17 -spawnstate S_ZCHANDELIER1 -height 60 -flags MF_SPAWNCEILING|MF_NOGRAVITY - -$ + -doomednum 8063 -spawnstate S_ZCHANDELIER_U -height 60 -flags MF_SPAWNCEILING|MF_NOGRAVITY - -S_ZCHANDELIER1 CDLR A 4 NULL S_ZCHANDELIER2 -S_ZCHANDELIER2 CDLR B 4 NULL S_ZCHANDELIER3 -S_ZCHANDELIER3 CDLR C 4 NULL S_ZCHANDELIER1 - -S_ZCHANDELIER_U CDLR D -1 NULL S_NULL - - -$ + -doomednum 24 -spawnstate S_ZTREEDEAD1 -radius 10 -height 96 -flags MF_SOLID - -$ + -doomednum 25 -spawnstate S_ZTREE -radius 15 -height 128 -flags MF_SOLID - -S_ZTREEDEAD1 TRE1 A -1 NULL S_NULL -S_ZTREE TRE1 A -1 NULL S_NULL - - -$ MT_TREEDESTRUCTIBLE -doomednum 8062 -spawnstate S_ZTREEDESTRUCTIBLE1 -spawnhealth 70 -deathstate S_ZTREEDES_D1 -deathsound TreeBreak -radius 15 -height 180 -mass 0x7fffffff -flags MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD - -S_ZTREEDESTRUCTIBLE1 TRDT A -1 NULL S_NULL - -// tree falling apart -S_ZTREEDES_D1 TRDT B 5 NULL S_ZTREEDES_D2 -S_ZTREEDES_D2 TRDT C 5 A_Scream S_ZTREEDES_D3 -S_ZTREEDES_D3 TRDT D 5 NULL S_ZTREEDES_D4 -S_ZTREEDES_D4 TRDT E 5 NULL S_ZTREEDES_D5 -S_ZTREEDES_D5 TRDT F 5 NULL S_ZTREEDES_D6 -S_ZTREEDES_D6 TRDT G -1 NULL S_NULL - -// tree burning up -S_ZTREEDES_X1 TRDT H* 5 NULL S_ZTREEDES_X2 -S_ZTREEDES_X2 TRDT I* 5 NULL S_ZTREEDES_X3 -S_ZTREEDES_X3 TRDT J* 5 NULL S_ZTREEDES_X4 -S_ZTREEDES_X4 TRDT K* 5 NULL S_ZTREEDES_X5 -S_ZTREEDES_X5 TRDT L* 5 NULL S_ZTREEDES_X6 -S_ZTREEDES_X6 TRDT M* 5 A_Explode S_ZTREEDES_X7 -S_ZTREEDES_X7 TRDT N* 5 NULL S_ZTREEDES_X8 -S_ZTREEDES_X8 TRDT O 5 NULL S_ZTREEDES_X9 -S_ZTREEDES_X9 TRDT P 5 NULL S_ZTREEDES_X10 -S_ZTREEDES_X10 TRDT Q -1 NULL S_NULL - - -$ + -doomednum 26 -spawnstate S_ZTREESWAMP182_1 -radius 10 -height 150 -flags MF_SOLID - -$ + -doomednum 27 -spawnstate S_ZTREESWAMP172_1 -radius 10 -height 120 -flags MF_SOLID - -S_ZTREESWAMP182_1 TRE2 A -1 NULL S_NULL -S_ZTREESWAMP172_1 TRE3 A -1 NULL S_NULL - - -$ + -doomednum 28 -spawnstate S_ZSTUMPBURNED1 -radius 12 -height 20 -flags MF_SOLID - -$ + -doomednum 29 -spawnstate S_ZSTUMPBARE1 -radius 12 -height 20 -flags MF_SOLID - -$ + doomednum 37 spawnstate S_ZSTUMPSWAMP1_1 -$ + doomednum 38 spawnstate S_ZSTUMPSWAMP2_1 - -S_ZSTUMPBURNED1 STM1 A -1 NULL S_NULL -S_ZSTUMPBARE1 STM2 A -1 NULL S_NULL -S_ZSTUMPSWAMP1_1 STM3 A -1 NULL S_NULL -S_ZSTUMPSWAMP2_1 STM4 A -1 NULL S_NULL - - -$ + doomednum 39 spawnstate S_ZSHROOMLARGE1_1 -$ + doomednum 40 spawnstate S_ZSHROOMLARGE2_1 -$ + doomednum 41 spawnstate S_ZSHROOMLARGE3_1 -$ + doomednum 42 spawnstate S_ZSHROOMSMALL1_1 -$ + doomednum 44 spawnstate S_ZSHROOMSMALL2_1 -$ + doomednum 45 spawnstate S_ZSHROOMSMALL3_1 -$ + doomednum 46 spawnstate S_ZSHROOMSMALL4_1 -$ + doomednum 47 spawnstate S_ZSHROOMSMALL5_1 - -S_ZSHROOMLARGE1_1 MSH1 A -1 NULL S_NULL -S_ZSHROOMLARGE2_1 MSH2 A -1 NULL S_NULL -S_ZSHROOMLARGE3_1 MSH3 A -1 NULL S_NULL -S_ZSHROOMSMALL1_1 MSH4 A -1 NULL S_NULL -S_ZSHROOMSMALL2_1 MSH5 A -1 NULL S_NULL -S_ZSHROOMSMALL3_1 MSH6 A -1 NULL S_NULL -S_ZSHROOMSMALL4_1 MSH7 A -1 NULL S_NULL -S_ZSHROOMSMALL5_1 MSH8 A -1 NULL S_NULL - - -$ + -doomednum 48 -spawnstate S_ZSTALAGMITEPILLAR1 -radius 8 -height 138 -flags MF_SOLID - -$ + -doomednum 49 -spawnstate S_ZSTALAGMITELARGE1 -radius 8 -height 48 -flags MF_SOLID - -$ + -doomednum 50 -spawnstate S_ZSTALAGMITEMEDIUM1 -radius 6 -height 40 -flags MF_SOLID - -$ + -doomednum 51 -spawnstate S_ZSTALAGMITESMALL1 -radius 8 -height 36 -flags MF_SOLID - -$ + -doomednum 52 -spawnstate S_ZSTALACTITELARGE1 -radius 8 -height 66 -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - -$ + -doomednum 56 -spawnstate S_ZSTALACTITEMEDIUM1 -radius 6 -height 50 -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - -$ + -doomednum 57 -spawnstate S_ZSTALACTITESMALL1 -radius 8 -height 40 -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - -S_ZSTALAGMITEPILLAR1 SGMP A -1 NULL S_NULL -S_ZSTALAGMITELARGE1 SGM1 A -1 NULL S_NULL -S_ZSTALAGMITEMEDIUM1 SGM2 A -1 NULL S_NULL -S_ZSTALAGMITESMALL1 SGM3 A -1 NULL S_NULL -S_ZSTALACTITELARGE1 SLC1 A -1 NULL S_NULL -S_ZSTALACTITEMEDIUM1 SLC2 A -1 NULL S_NULL -S_ZSTALACTITESMALL1 SLC3 A -1 NULL S_NULL - - -$ + -doomednum 58 -spawnstate S_ZMOSSCEILING1_1 -height 20 -flags MF_SPAWNCEILING|MF_NOGRAVITY - -$ + -doomednum 59 -spawnstate S_ZMOSSCEILING2_1 -height 24 -flags MF_SPAWNCEILING|MF_NOGRAVITY - -S_ZMOSSCEILING1_1 MSS1 A -1 NULL S_NULL -S_ZMOSSCEILING2_1 MSS2 A -1 NULL S_NULL - - -$ + -doomednum 60 -spawnstate S_ZSWAMPVINE1 -radius 8 -height 52 -flags MF_SOLID - -S_ZSWAMPVINE1 SWMV A -1 NULL S_NULL - - -$ + -doomednum 61 -spawnstate S_ZCORPSEKABOB1 -radius 10 -height 92 -flags MF_SOLID - -$ + -doomednum 62 -spawnstate S_ZCORPSESLEEPING1 - -S_ZCORPSEKABOB1 CPS1 A -1 NULL S_NULL -S_ZCORPSESLEEPING1 CPS2 A -1 NULL S_NULL - - -$ + -doomednum 63 -spawnstate S_ZTOMBSTONERIP1 -radius 10 -height 46 -flags MF_SOLID - -$ + -doomednum 64 -spawnstate S_ZTOMBSTONESHANE1 -radius 10 -height 46 -flags MF_SOLID - -$ + -doomednum 65 -spawnstate S_ZTOMBSTONEBIGCROSS1 -radius 10 -height 46 -flags MF_SOLID - -$ + -doomednum 66 -spawnstate S_ZTOMBSTONEBRIANR1 -radius 10 -height 52 -flags MF_SOLID - -$ + -doomednum 67 -spawnstate S_ZTOMBSTONECROSSCIRCLE1 -radius 10 -height 52 -flags MF_SOLID - -$ + -doomednum 68 -spawnstate S_ZTOMBSTONESMALLCROSS1 -radius 8 -height 46 -flags MF_SOLID - -$ + -doomednum 69 -spawnstate S_ZTOMBSTONEBRIANP1 -radius 8 -height 46 -flags MF_SOLID - -S_ZTOMBSTONERIP1 TMS1 A -1 NULL S_NULL -S_ZTOMBSTONESHANE1 TMS2 A -1 NULL S_NULL -S_ZTOMBSTONEBIGCROSS1 TMS3 A -1 NULL S_NULL -S_ZTOMBSTONEBRIANR1 TMS4 A -1 NULL S_NULL -S_ZTOMBSTONECROSSCIRCLE1 TMS5 A -1 NULL S_NULL -S_ZTOMBSTONESMALLCROSS1 TMS6 A -1 NULL S_NULL -S_ZTOMBSTONEBRIANP1 TMS7 A -1 NULL S_NULL - - -$ + -doomednum 71 -spawnstate S_CORPSEHANGING_1 -radius 6 -height 75 -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - -S_CORPSEHANGING_1 CPS3 A -1 NULL S_NULL - - -$ + -doomednum 72 -spawnstate S_ZSTATUEGARGOYLEGREENTALL_1 -radius 14 -height 108 -flags MF_SOLID - -$ + -doomednum 73 -spawnstate S_ZSTATUEGARGOYLEBLUETALL_1 -radius 14 -height 108 -flags MF_SOLID - -$ + -doomednum 74 -spawnstate S_ZSTATUEGARGOYLEGREENSHORT_1 -radius 14 -height 62 -flags MF_SOLID - -$ + -doomednum 76 -spawnstate S_ZSTATUEGARGOYLEBLUESHORT_1 -radius 14 -height 62 -flags MF_SOLID - -$ + -doomednum 8044 -spawnstate S_ZSTATUEGARGOYLESTRIPETALL_1 -radius 14 -height 108 -flags MF_SOLID - -$ + -doomednum 8045 -spawnstate S_ZSTATUEGARGOYLEDARKREDTALL_1 -radius 14 -height 108 -flags MF_SOLID - -$ + -doomednum 8046 -spawnstate S_ZSTATUEGARGOYLEREDTALL_1 -radius 14 -height 108 -flags MF_SOLID - -$ + -doomednum 8047 -spawnstate S_ZSTATUEGARGOYLETANTALL_1 -radius 14 -height 108 -flags MF_SOLID - -$ + -doomednum 8048 -spawnstate S_ZSTATUEGARGOYLERUSTTALL_1 -radius 14 -height 108 -flags MF_SOLID - -$ + -doomednum 8049 -spawnstate S_ZSTATUEGARGOYLEDARKREDSHORT_1 -radius 14 -height 62 -flags MF_SOLID - -$ + -doomednum 8050 -spawnstate S_ZSTATUEGARGOYLEREDSHORT_1 -radius 14 -height 62 -flags MF_SOLID - -$ + -doomednum 8051 -spawnstate S_ZSTATUEGARGOYLETANSHORT_1 -radius 14 -height 62 -flags MF_SOLID - -$ + -doomednum 8052 -spawnstate S_ZSTATUEGARGOYLERUSTSHORT_1 -radius 14 -height 62 -flags MF_SOLID - -S_ZSTATUEGARGOYLEGREENTALL_1 STT2 A -1 NULL S_NULL -S_ZSTATUEGARGOYLEBLUETALL_1 STT3 A -1 NULL S_NULL -S_ZSTATUEGARGOYLEGREENSHORT_1 STT4 A -1 NULL S_NULL -S_ZSTATUEGARGOYLEBLUESHORT_1 STT5 A -1 NULL S_NULL -S_ZSTATUEGARGOYLESTRIPETALL_1 GAR1 A -1 NULL S_NULL -S_ZSTATUEGARGOYLEDARKREDTALL_1 GAR2 A -1 NULL S_NULL -S_ZSTATUEGARGOYLEREDTALL_1 GAR3 A -1 NULL S_NULL -S_ZSTATUEGARGOYLETANTALL_1 GAR4 A -1 NULL S_NULL -S_ZSTATUEGARGOYLERUSTTALL_1 GAR5 A -1 NULL S_NULL -S_ZSTATUEGARGOYLEDARKREDSHORT_1 GAR6 A -1 NULL S_NULL -S_ZSTATUEGARGOYLEREDSHORT_1 GAR7 A -1 NULL S_NULL -S_ZSTATUEGARGOYLETANSHORT_1 GAR8 A -1 NULL S_NULL -S_ZSTATUEGARGOYLERUSTSHORT_1 GAR9 A -1 NULL S_NULL - - -$ + -doomednum 77 -spawnstate S_ZBANNERTATTERED_1 -radius 8 -height 120 -flags MF_SOLID - -S_ZBANNERTATTERED_1 BNR1 A -1 NULL S_NULL - - -$ + -doomednum 78 -spawnstate S_ZTREELARGE1 -deathstate S_ZTREELARGE1 -radius 15 -height 180 -flags MF_SOLID - -$ + -doomednum 79 -spawnstate S_ZTREELARGE2 -deathstate S_ZTREELARGE2 -radius 15 -height 180 -flags MF_SOLID - -$ + -doomednum 80 -spawnstate S_ZTREEGNARLED1 -radius 22 -height 100 -flags MF_SOLID - -$ + -doomednum 87 -spawnstate S_ZTREEGNARLED2 -radius 22 -height 100 -flags MF_SOLID - -$ + -doomednum 88 -spawnstate S_ZLOG -height 25 -flags MF_SOLID - -S_ZTREELARGE1 TRE4 A -1 NULL S_NULL -S_ZTREELARGE2 TRE5 A -1 NULL S_NULL -S_ZTREEGNARLED1 TRE6 A -1 NULL S_NULL -S_ZTREEGNARLED2 TRE7 A -1 NULL S_NULL -S_ZLOG LOGG A -1 NULL S_NULL - - -$ + -doomednum 89 -spawnstate S_ZSTALACTITEICELARGE -radius 8 -height 66 -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - -$ + -doomednum 90 -spawnstate S_ZSTALACTITEICEMEDIUM -radius 5 -height 50 -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - -$ + -doomednum 91 -spawnstate S_ZSTALACTITEICESMALL -radius 4 -height 32 -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - -$ + -doomednum 92 -spawnstate S_ZSTALACTITEICETINY -radius 4 -height 8 -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - -$ + -doomednum 93 -spawnstate S_ZSTALAGMITEICELARGE -radius 8 -height 66 -flags MF_SOLID - -$ + -doomednum 94 -spawnstate S_ZSTALAGMITEICEMEDIUM -radius 5 -height 50 -flags MF_SOLID - -$ + -doomednum 95 -spawnstate S_ZSTALAGMITEICESMALL -radius 4 -height 32 -flags MF_SOLID - -$ + -doomednum 96 -spawnstate S_ZSTALAGMITEICETINY -radius 4 -height 8 -flags MF_SOLID - -S_ZSTALACTITEICELARGE ICT1 A -1 NULL S_NULL -S_ZSTALACTITEICEMEDIUM ICT2 A -1 NULL S_NULL -S_ZSTALACTITEICESMALL ICT3 A -1 NULL S_NULL -S_ZSTALACTITEICETINY ICT4 A -1 NULL S_NULL -S_ZSTALAGMITEICELARGE ICM1 A -1 NULL S_NULL -S_ZSTALAGMITEICEMEDIUM ICM2 A -1 NULL S_NULL -S_ZSTALAGMITEICESMALL ICM3 A -1 NULL S_NULL -S_ZSTALAGMITEICETINY ICM4 A -1 NULL S_NULL - - -$ + doomednum 97 spawnstate S_ZROCKBROWN1 radius 17 height 72 flags MF_SOLID -$ + doomednum 98 spawnstate S_ZROCKBROWN2 radius 15 height 50 flags MF_SOLID -$ + doomednum 99 spawnstate S_ZROCKBLACK radius 20 height 40 flags MF_SOLID -$ + doomednum 100 spawnstate S_ZRUBBLE1 -$ + doomednum 101 spawnstate S_ZRUBBLE2 -$ + doomednum 102 spawnstate S_ZRUBBLE3 - -S_ZROCKBROWN1 RKBL A -1 NULL S_NULL -S_ZROCKBROWN2 RKBS A -1 NULL S_NULL -S_ZROCKBLACK RKBK A -1 NULL S_NULL -S_ZRUBBLE1 RBL1 A -1 NULL S_NULL -S_ZRUBBLE2 RBL2 A -1 NULL S_NULL -S_ZRUBBLE3 RBL3 A -1 NULL S_NULL - - -$ + -doomednum 103 -spawnstate S_ZVASEPILLAR -radius 12 -height 54 -flags MF_SOLID - -$ MT_POTTERY1 -doomednum 104 -spawnstate S_ZPOTTERY1 -spawnhealth 15 -deathstate S_ZPOTTERY_EXPLODE -radius 10 -height 32 -flags MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD|MF_DROPOFF -flags2 MF2_SLIDE|MF2_PUSHABLE|MF2_TELESTOMP|MF2_PASSMOBJ - -$ MT_POTTERY2 -doomednum 105 -spawnstate S_ZPOTTERY2 -spawnhealth 15 -deathstate S_ZPOTTERY_EXPLODE -radius 10 -height 25 -flags MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD|MF_DROPOFF -flags2 MF2_SLIDE|MF2_PUSHABLE|MF2_TELESTOMP|MF2_PASSMOBJ - -$ MT_POTTERY3 -doomednum 106 -spawnstate S_ZPOTTERY3 -spawnhealth 15 -deathstate S_ZPOTTERY_EXPLODE -radius 15 -height 25 -flags MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD|MF_DROPOFF -flags2 MF2_SLIDE|MF2_PUSHABLE|MF2_TELESTOMP|MF2_PASSMOBJ - -$ MT_POTTERYBIT1 -spawnstate S_POTTERYBIT_1 -deathstate S_POTTERYBIT_EX0 -radius 5 -height 5 -flags MF_MISSILE -flags2 MF2_NOTELEPORT - -S_ZVASEPILLAR VASE A -1 NULL S_NULL - -S_ZPOTTERY1 POT1 A -1 NULL S_NULL -S_ZPOTTERY2 POT2 A -1 NULL S_NULL -S_ZPOTTERY3 POT3 A -1 NULL S_NULL -S_ZPOTTERY_EXPLODE POT1 A 0 A_PotteryExplode S_NULL - -S_POTTERYBIT_1 PBIT A -1 NULL S_NULL -S_POTTERYBIT_2 PBIT B -1 NULL S_NULL -S_POTTERYBIT_3 PBIT C -1 NULL S_NULL -S_POTTERYBIT_4 PBIT D -1 NULL S_NULL -S_POTTERYBIT_5 PBIT E -1 NULL S_NULL - -S_POTTERYBIT_EX0 PBIT F 0 A_PotteryChooseBit S_NULL - -S_POTTERYBIT_EX1 PBIT F 140 NULL S_POTTERYBIT_EX1_2 -S_POTTERYBIT_EX1_2 PBIT F 1 A_PotteryCheck S_NULL - -S_POTTERYBIT_EX2 PBIT G 140 NULL S_POTTERYBIT_EX2_2 -S_POTTERYBIT_EX2_2 PBIT G 1 A_PotteryCheck S_NULL - -S_POTTERYBIT_EX3 PBIT H 140 NULL S_POTTERYBIT_EX3_2 -S_POTTERYBIT_EX3_2 PBIT H 1 A_PotteryCheck S_NULL - -S_POTTERYBIT_EX4 PBIT I 140 NULL S_POTTERYBIT_EX4_2 -S_POTTERYBIT_EX4_2 PBIT I 1 A_PotteryCheck S_NULL - -S_POTTERYBIT_EX5 PBIT J 140 NULL S_POTTERYBIT_EX5_2 -S_POTTERYBIT_EX5_2 PBIT J 1 A_PotteryCheck S_NULL - - -$ + -doomednum 108 -spawnstate S_ZCORPSELYNCHED1 -radius 11 -height 95 -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - -$ MT_ZLYNCHED_NOHEART -doomednum 109 -spawnstate S_ZCORPSELYNCHED2 -radius 10 -height 100 -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - -$ + -doomednum 110 -spawnstate S_ZCORPSESITTING -spawnhealth 30 -deathstate S_ZCORPSESITTING_X -radius 15 -height 35 -flags MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD - -$ MT_CORPSEBIT -spawnstate S_CORPSEBIT_1 -radius 5 -height 5 -flags MF_NOBLOCKMAP -flags2 MF2_TELESTOMP - -$ MT_CORPSEBLOODDRIP -spawnstate S_CORPSEBLOODDRIP -deathstate S_CORPSEBLOODDRIP_X1 -deathsound Drip -radius 1 -height 4 -flags MF_MISSILE -flags2 MF2_LOGRAV - -$ MT_BLOODPOOL -doomednum 111 -spawnstate S_BLOODPOOL -flags MF_NOBLOCKMAP - -S_ZCORPSELYNCHED1 CPS4 A -1 NULL S_NULL -S_ZCORPSELYNCHED2 CPS5 A 140 A_CorpseBloodDrip S_ZCORPSELYNCHED2 -S_ZCORPSESITTING CPS6 A -1 NULL S_NULL -S_ZCORPSESITTING_X CPS6 A 1 A_CorpseExplode S_NULL - -S_CORPSEBIT_1 CPB1 A -1 NULL S_NULL -S_CORPSEBIT_2 CPB2 A -1 NULL S_NULL -S_CORPSEBIT_3 CPB3 A -1 NULL S_NULL -S_CORPSEBIT_4 CPB4 A -1 NULL S_NULL - -S_CORPSEBLOODDRIP BDRP A -1 NULL S_NULL -S_CORPSEBLOODDRIP_X1 BDSH A 3 NULL S_CORPSEBLOODDRIP_X2 -S_CORPSEBLOODDRIP_X2 BDSH B 3 NULL S_CORPSEBLOODDRIP_X3 -S_CORPSEBLOODDRIP_X3 BDSH C 2 NULL S_CORPSEBLOODDRIP_X4 -S_CORPSEBLOODDRIP_X4 BDSH D 2 NULL S_NULL - -S_BLOODPOOL BDPL A -1 NULL S_NULL - - -$ + -doomednum 119 -spawnstate S_ZCANDLE1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -S_ZCANDLE1 CNDL A* 4 NULL S_ZCANDLE2 -S_ZCANDLE2 CNDL B* 4 NULL S_ZCANDLE3 -S_ZCANDLE3 CNDL C* 4 NULL S_ZCANDLE1 - - -$ + -doomednum 113 -spawnstate S_ZLEAFSPAWNER -flags MF_NOBLOCKMAP|MF_NOSECTOR -flags2 MF2_DONTDRAW - -$ MT_LEAF1 -spawnstate S_LEAF1_1 -deathstate S_LEAF_X1 -radius 2 -height 4 -flags MF_NOBLOCKMAP|MF_MISSILE -flags2 MF2_NOTELEPORT|MF2_LOGRAV - -$ MT_LEAF2 -spawnstate S_LEAF2_1 -deathstate S_LEAF_X1 -radius 2 -height 4 -flags MF_NOBLOCKMAP|MF_MISSILE -flags2 MF2_NOTELEPORT|MF2_LOGRAV - -S_ZLEAFSPAWNER MAN1 A 20 A_LeafSpawn S_ZLEAFSPAWNER - -S_LEAF1_1 LEF1 A 4 NULL S_LEAF1_2 -S_LEAF1_2 LEF1 B 4 NULL S_LEAF1_3 -S_LEAF1_3 LEF1 C 4 NULL S_LEAF1_4 -S_LEAF1_4 LEF1 D 4 A_LeafThrust S_LEAF1_5 -S_LEAF1_5 LEF1 E 4 NULL S_LEAF1_6 -S_LEAF1_6 LEF1 F 4 NULL S_LEAF1_7 -S_LEAF1_7 LEF1 G 4 NULL S_LEAF1_8 -S_LEAF1_8 LEF1 H 4 A_LeafThrust S_LEAF1_9 -S_LEAF1_9 LEF1 I 4 NULL S_LEAF1_10 -S_LEAF1_10 LEF1 A 4 NULL S_LEAF1_11 -S_LEAF1_11 LEF1 B 4 NULL S_LEAF1_12 -S_LEAF1_12 LEF1 C 4 A_LeafThrust S_LEAF1_13 -S_LEAF1_13 LEF1 D 4 NULL S_LEAF1_14 -S_LEAF1_14 LEF1 E 4 NULL S_LEAF1_15 -S_LEAF1_15 LEF1 F 4 NULL S_LEAF1_16 -S_LEAF1_16 LEF1 G 4 A_LeafThrust S_LEAF1_17 -S_LEAF1_17 LEF1 H 4 NULL S_LEAF1_18 -S_LEAF1_18 LEF1 I 4 NULL S_NULL - -S_LEAF_X1 LEF3 D 10 A_LeafCheck S_LEAF_X1 - -S_LEAF2_1 LEF2 A 4 NULL S_LEAF2_2 -S_LEAF2_2 LEF2 B 4 NULL S_LEAF2_3 -S_LEAF2_3 LEF2 C 4 NULL S_LEAF2_4 -S_LEAF2_4 LEF2 D 4 A_LeafThrust S_LEAF2_5 -S_LEAF2_5 LEF2 E 4 NULL S_LEAF2_6 -S_LEAF2_6 LEF2 F 4 NULL S_LEAF2_7 -S_LEAF2_7 LEF2 G 4 NULL S_LEAF2_8 -S_LEAF2_8 LEF2 H 4 A_LeafThrust S_LEAF2_9 -S_LEAF2_9 LEF2 I 4 NULL S_LEAF2_10 -S_LEAF2_10 LEF2 A 4 NULL S_LEAF2_11 -S_LEAF2_11 LEF2 B 4 NULL S_LEAF2_12 -S_LEAF2_12 LEF2 C 4 A_LeafThrust S_LEAF2_13 -S_LEAF2_13 LEF2 D 4 NULL S_LEAF2_14 -S_LEAF2_14 LEF2 E 4 NULL S_LEAF2_15 -S_LEAF2_15 LEF2 F 4 NULL S_LEAF2_16 -S_LEAF2_16 LEF2 G 4 A_LeafThrust S_LEAF2_17 -S_LEAF2_17 LEF2 H 4 NULL S_LEAF2_18 -S_LEAF2_18 LEF2 I 4 NULL S_NULL - - -$ MT_ZTWINEDTORCH -doomednum 116 -spawnstate S_ZTWINEDTORCH_1 -radius 10 -height 64 -flags MF_SOLID - -$ MT_ZTWINEDTORCH_UNLIT -doomednum 117 -spawnstate S_ZTWINEDTORCH_UNLIT -radius 10 -height 64 -flags MF_SOLID - -S_ZTWINEDTORCH_1 TWTR A* 4 NULL S_ZTWINEDTORCH_2 -S_ZTWINEDTORCH_2 TWTR B* 4 NULL S_ZTWINEDTORCH_3 -S_ZTWINEDTORCH_3 TWTR C* 4 NULL S_ZTWINEDTORCH_4 -S_ZTWINEDTORCH_4 TWTR D* 4 NULL S_ZTWINEDTORCH_5 -S_ZTWINEDTORCH_5 TWTR E* 4 NULL S_ZTWINEDTORCH_6 -S_ZTWINEDTORCH_6 TWTR F* 4 NULL S_ZTWINEDTORCH_7 -S_ZTWINEDTORCH_7 TWTR G* 4 NULL S_ZTWINEDTORCH_8 -S_ZTWINEDTORCH_8 TWTR H* 4 NULL S_ZTWINEDTORCH_1 - -S_ZTWINEDTORCH_UNLIT TWTR I -1 NULL S_NULL - - -$ MT_BRIDGE -doomednum 118 -spawnstate S_BRIDGE1 -radius 32 -height 2 -flags MF_SOLID|MF_NOGRAVITY -flags2 MF2_DONTDRAW - -$ MT_BRIDGEBALL -spawnstate S_BBALL1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -S_BRIDGE1 TLGL A 2 NULL S_BRIDGE2 -S_BRIDGE2 TLGL A 2 A_BridgeInit S_BRIDGE3 -S_BRIDGE3 TLGL A -1 NULL S_NULL - -S_FREE_BRIDGE1 TLGL A 2 NULL S_FREE_BRIDGE2 -S_FREE_BRIDGE2 TLGL A 300 NULL S_NULL - -S_BBALL1 TLGL A 2 NULL S_BBALL2 -S_BBALL2 TLGL A 5 A_BridgeOrbit S_BBALL2 - - -$ MT_ZWALLTORCH -doomednum 54 -spawnstate S_ZWALLTORCH1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -$ MT_ZWALLTORCH_UNLIT -doomednum 55 -spawnstate S_ZWALLTORCH_U -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -S_ZWALLTORCH1 WLTR A* 5 NULL S_ZWALLTORCH2 -S_ZWALLTORCH2 WLTR B* 5 NULL S_ZWALLTORCH3 -S_ZWALLTORCH3 WLTR C* 5 NULL S_ZWALLTORCH4 -S_ZWALLTORCH4 WLTR D* 5 NULL S_ZWALLTORCH5 -S_ZWALLTORCH5 WLTR E* 5 NULL S_ZWALLTORCH6 -S_ZWALLTORCH6 WLTR F* 5 NULL S_ZWALLTORCH7 -S_ZWALLTORCH7 WLTR G* 5 NULL S_ZWALLTORCH8 -S_ZWALLTORCH8 WLTR H* 5 NULL S_ZWALLTORCH1 - -S_ZWALLTORCH_U WLTR I -1 NULL S_NULL - - -$ MT_ZBARREL -doomednum 8100 -spawnstate S_ZBARREL1 -radius 15 -height 32 -flags MF_SOLID - -S_ZBARREL1 BARL A -1 NULL S_NULL - - -$ MT_ZSHRUB1 -doomednum 8101 -spawnstate S_ZSHRUB1 -spawnhealth 20 -meleestate S_ZSHRUB1_X1 -deathstate S_ZSHRUB1_DIE -deathsound TreeExplode -radius 8 -height 24 -mass 0x7fffffff -flags MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD - -$ MT_ZSHRUB2 -doomednum 8102 -spawnstate S_ZSHRUB2 -spawnhealth 10 -meleestate S_ZSHRUB2_X1 -deathstate S_ZSHRUB2_DIE -deathsound TreeExplode -radius 16 -height 40 -mass 0x7fffffff -flags MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD - -S_ZSHRUB1 SHB1 A -1 NULL S_NULL - -S_ZSHRUB1_DIE SHB1 A 1 A_TreeDeath S_ZSHRUB1 - -S_ZSHRUB1_X1 SHB1 B* 7 NULL S_ZSHRUB1_X2 -S_ZSHRUB1_X2 SHB1 C* 6 A_Scream S_ZSHRUB1_X3 -S_ZSHRUB1_X3 SHB1 D* 5 NULL S_NULL - -S_ZSHRUB2 SHB2 A -1 NULL S_NULL - -S_ZSHRUB2_DIE SHB2 A 1 A_TreeDeath S_ZSHRUB2 - -S_ZSHRUB2_X1 SHB2 B* 7 NULL S_ZSHRUB2_X2 -S_ZSHRUB2_X2 SHB2 C* 6 A_Scream S_ZSHRUB2_X3 -S_ZSHRUB2_X3 SHB2 D* 5 A_Explode S_ZSHRUB2_X4 -S_ZSHRUB2_X4 SHB2 E* 5 NULL S_NULL - - -$ MT_ZBUCKET -doomednum 8103 -spawnstate S_ZBUCKET1 -radius 8 -height 72 -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - -S_ZBUCKET1 BCKT A -1 NULL S_NULL - - -$ MT_ZPOISONSHROOM -doomednum 8104 -spawnstate S_ZPOISONSHROOM1 -spawnhealth 30 -painstate S_ZPOISONSHROOM_P1 -painchance 255 -painsound PoisonShroomPain -deathstate S_ZPOISONSHROOM_X1 -deathsound PoisonShroomDeath -radius 6 -height 20 -mass 0x7fffffff -flags MF_SHOOTABLE|MF_SOLID|MF_NOBLOOD - -S_ZPOISONSHROOM1 SHRM A 5 A_PoisonShroom S_ZPOISONSHROOM_P2 -S_ZPOISONSHROOM_P1 SHRM A 6 NULL S_ZPOISONSHROOM_P2 -S_ZPOISONSHROOM_P2 SHRM B 8 A_Pain S_ZPOISONSHROOM1 - -S_ZPOISONSHROOM_X1 SHRM C 5 NULL S_ZPOISONSHROOM_X2 -S_ZPOISONSHROOM_X2 SHRM D 5 NULL S_ZPOISONSHROOM_X3 -S_ZPOISONSHROOM_X3 SHRM E 5 A_PoisonBagInit S_ZPOISONSHROOM_X4 -S_ZPOISONSHROOM_X4 SHRM F -1 NULL S_NULL - - -$ MT_ZFIREBULL -doomednum 8042 -spawnstate S_ZFIREBULL1 -height 80 -flags MF_SOLID - -$ MT_ZFIREBULL_UNLIT -doomednum 8043 -spawnstate S_ZFIREBULL_U -height 80 -flags MF_SOLID - -S_ZFIREBULL1 FBUL A* 4 NULL S_ZFIREBULL2 -S_ZFIREBULL2 FBUL B* 4 NULL S_ZFIREBULL3 -S_ZFIREBULL3 FBUL C* 4 NULL S_ZFIREBULL4 -S_ZFIREBULL4 FBUL D* 4 NULL S_ZFIREBULL5 -S_ZFIREBULL5 FBUL E* 4 NULL S_ZFIREBULL6 -S_ZFIREBULL6 FBUL F* 4 NULL S_ZFIREBULL7 -S_ZFIREBULL7 FBUL G* 4 NULL S_ZFIREBULL1 - -S_ZFIREBULL_DEATH FBUL J* 4 NULL S_ZFIREBULL_DEATH2 -S_ZFIREBULL_DEATH2 FBUL I* 4 NULL S_ZFIREBULL_U -S_ZFIREBULL_U FBUL H -1 NULL S_NULL - -S_ZFIREBULL_BIRTH FBUL I* 4 NULL S_ZFIREBULL_BIRTH2 -S_ZFIREBULL_BIRTH2 FBUL J* 4 NULL S_ZFIREBULL1 - - -$ MT_FIRETHING -doomednum 8060 -spawnstate S_ZFIRETHING1 -radius 5 -height 10 -flags MF_SOLID - -S_ZFIRETHING1 FSKL A* 4 NULL S_ZFIRETHING2 -S_ZFIRETHING2 FSKL B* 3 NULL S_ZFIRETHING3 -S_ZFIRETHING3 FSKL C* 4 NULL S_ZFIRETHING4 -S_ZFIRETHING4 FSKL D* 3 NULL S_ZFIRETHING5 -S_ZFIRETHING5 FSKL E* 4 NULL S_ZFIRETHING6 -S_ZFIRETHING6 FSKL F* 3 NULL S_ZFIRETHING7 -S_ZFIRETHING7 FSKL G* 4 NULL S_ZFIRETHING8 -S_ZFIRETHING8 FSKL H* 3 NULL S_ZFIRETHING9 -S_ZFIRETHING9 FSKL I* 4 NULL S_ZFIRETHING1 - - -$ MT_BRASSTORCH -doomednum 8061 -spawnstate S_ZBRASSTORCH1 -radius 6 -height 35 -flags MF_SOLID - -S_ZBRASSTORCH1 BRTR A* 4 NULL S_ZBRASSTORCH2 -S_ZBRASSTORCH2 BRTR B* 4 NULL S_ZBRASSTORCH3 -S_ZBRASSTORCH3 BRTR C* 4 NULL S_ZBRASSTORCH4 -S_ZBRASSTORCH4 BRTR D* 4 NULL S_ZBRASSTORCH5 -S_ZBRASSTORCH5 BRTR E* 4 NULL S_ZBRASSTORCH6 -S_ZBRASSTORCH6 BRTR F* 4 NULL S_ZBRASSTORCH7 -S_ZBRASSTORCH7 BRTR G* 4 NULL S_ZBRASSTORCH8 -S_ZBRASSTORCH8 BRTR H* 4 NULL S_ZBRASSTORCH9 -S_ZBRASSTORCH9 BRTR I* 4 NULL S_ZBRASSTORCH10 -S_ZBRASSTORCH10 BRTR J* 4 NULL S_ZBRASSTORCH11 -S_ZBRASSTORCH11 BRTR K* 4 NULL S_ZBRASSTORCH12 -S_ZBRASSTORCH12 BRTR L* 4 NULL S_ZBRASSTORCH13 -S_ZBRASSTORCH13 BRTR M* 4 NULL S_ZBRASSTORCH1 - - -$ MT_ZSUITOFARMOR -doomednum 8064 -spawnstate S_ZSUITOFARMOR -spawnhealth 60 -deathstate S_ZSUITOFARMOR_X1 -deathsound SuitofArmorBreak -radius 16 -height 72 -mass 0x7fffffff -flags MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD - -$ MT_ZARMORCHUNK -spawnstate S_ZARMORCHUNK1 -radius 4 -height 8 - -S_ZSUITOFARMOR SUIT A -1 NULL S_NULL - -S_ZSUITOFARMOR_X1 SUIT A 1 A_SoAExplode S_NULL - -S_ZARMORCHUNK1 SUIT B -1 NULL S_NULL -S_ZARMORCHUNK2 SUIT C -1 NULL S_NULL -S_ZARMORCHUNK3 SUIT D -1 NULL S_NULL -S_ZARMORCHUNK4 SUIT E -1 NULL S_NULL -S_ZARMORCHUNK5 SUIT F -1 NULL S_NULL -S_ZARMORCHUNK6 SUIT G -1 NULL S_NULL -S_ZARMORCHUNK7 SUIT H -1 NULL S_NULL -S_ZARMORCHUNK8 SUIT I -1 NULL S_NULL -S_ZARMORCHUNK9 SUIT J -1 NULL S_NULL -S_ZARMORCHUNK10 SUIT K -1 NULL S_NULL - - -$ MT_ZBELL -doomednum 8065 -spawnstate S_ZBELL -spawnhealth 5 -deathstate S_ZBELL_X1 -deathsound BellRing -radius 56 -height 120 -mass 0x7fffffff -flags MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD|MF_NOGRAVITY|MF_SPAWNCEILING - -S_ZBELL BBLL F -1 NULL S_NULL - -S_ZBELL_X1 BBLL A 4 A_BellReset1 S_ZBELL_X2 -S_ZBELL_X2 BBLL B 4 NULL S_ZBELL_X3 -S_ZBELL_X3 BBLL C 4 NULL S_ZBELL_X4 -S_ZBELL_X4 BBLL D 5 A_Scream S_ZBELL_X5 -S_ZBELL_X5 BBLL C 4 NULL S_ZBELL_X6 -S_ZBELL_X6 BBLL B 4 NULL S_ZBELL_X7 -S_ZBELL_X7 BBLL A 3 NULL S_ZBELL_X8 -S_ZBELL_X8 BBLL E 4 NULL S_ZBELL_X9 -S_ZBELL_X9 BBLL F 5 NULL S_ZBELL_X10 -S_ZBELL_X10 BBLL G 6 A_Scream S_ZBELL_X11 -S_ZBELL_X11 BBLL F 5 NULL S_ZBELL_X12 -S_ZBELL_X12 BBLL E 4 NULL S_ZBELL_X13 -S_ZBELL_X13 BBLL A 4 NULL S_ZBELL_X14 -S_ZBELL_X14 BBLL B 5 NULL S_ZBELL_X15 -S_ZBELL_X15 BBLL C 5 NULL S_ZBELL_X16 -S_ZBELL_X16 BBLL D 6 A_Scream S_ZBELL_X17 -S_ZBELL_X17 BBLL C 5 NULL S_ZBELL_X18 -S_ZBELL_X18 BBLL B 5 NULL S_ZBELL_X19 -S_ZBELL_X19 BBLL A 4 NULL S_ZBELL_X20 -S_ZBELL_X20 BBLL E 5 NULL S_ZBELL_X21 -S_ZBELL_X21 BBLL F 5 NULL S_ZBELL_X22 -S_ZBELL_X22 BBLL G 7 A_Scream S_ZBELL_X23 -S_ZBELL_X23 BBLL F 5 NULL S_ZBELL_X24 -S_ZBELL_X24 BBLL E 5 NULL S_ZBELL_X25 -S_ZBELL_X25 BBLL A 5 NULL S_ZBELL_X26 -S_ZBELL_X26 BBLL B 6 NULL S_ZBELL_X27 -S_ZBELL_X27 BBLL C 6 NULL S_ZBELL_X28 -S_ZBELL_X28 BBLL D 7 A_Scream S_ZBELL_X29 -S_ZBELL_X29 BBLL C 6 NULL S_ZBELL_X30 -S_ZBELL_X30 BBLL B 6 NULL S_ZBELL_X31 -S_ZBELL_X31 BBLL A 5 NULL S_ZBELL_X32 -S_ZBELL_X32 BBLL E 6 NULL S_ZBELL_X33 -S_ZBELL_X33 BBLL F 6 NULL S_ZBELL_X34 -S_ZBELL_X34 BBLL G 7 A_Scream S_ZBELL_X35 -S_ZBELL_X35 BBLL F 6 NULL S_ZBELL_X36 -S_ZBELL_X36 BBLL E 6 NULL S_ZBELL_X37 -S_ZBELL_X37 BBLL A 6 NULL S_ZBELL_X38 -S_ZBELL_X38 BBLL B 6 NULL S_ZBELL_X39 -S_ZBELL_X39 BBLL C 6 NULL S_ZBELL_X40 -S_ZBELL_X40 BBLL B 7 NULL S_ZBELL_X41 -S_ZBELL_X41 BBLL A 8 NULL S_ZBELL_X42 -S_ZBELL_X42 BBLL E 12 NULL S_ZBELL_X43 -S_ZBELL_X43 BBLL A 10 NULL S_ZBELL_X44 -S_ZBELL_X44 BBLL B 12 NULL S_ZBELL_X45 -S_ZBELL_X45 BBLL A 12 NULL S_ZBELL_X46 -S_ZBELL_X46 BBLL E 14 NULL S_ZBELL_X47 -S_ZBELL_X47 BBLL A 1 A_BellReset2 S_ZBELL - - -$ MT_ZBLUE_CANDLE -doomednum 8066 -spawnstate S_ZBLUE_CANDLE1 -flags MF_NOBLOCKMAP - -S_ZBLUE_CANDLE1 CAND A* 5 NULL S_ZBLUE_CANDLE2 -S_ZBLUE_CANDLE2 CAND B* 5 NULL S_ZBLUE_CANDLE3 -S_ZBLUE_CANDLE3 CAND C* 5 NULL S_ZBLUE_CANDLE4 -S_ZBLUE_CANDLE4 CAND D* 5 NULL S_ZBLUE_CANDLE5 -S_ZBLUE_CANDLE5 CAND E* 5 NULL S_ZBLUE_CANDLE1 - - -$ MT_ZIRON_MAIDEN -doomednum 8067 -spawnstate S_ZIRON_MAIDEN -radius 12 -height 60 -flags MF_SOLID - -S_ZIRON_MAIDEN IRON A -1 NULL S_NULL - - -$ MT_ZXMAS_TREE -doomednum 8068 -spawnstate S_ZXMAS_TREE -spawnhealth 20 -meleestate S_ZXMAS_TREE_X1 -deathstate S_ZXMAS_TREE_DIE -deathsound TreeExplode -radius 11 -height 130 -mass 0x7fffffff -flags MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD - -S_ZXMAS_TREE XMAS A -1 NULL S_NULL -S_ZXMAS_TREE_DIE XMAS A 4 A_TreeDeath S_ZXMAS_TREE - -S_ZXMAS_TREE_X1 XMAS B* 6 NULL S_ZXMAS_TREE_X2 -S_ZXMAS_TREE_X2 XMAS C* 6 A_Scream S_ZXMAS_TREE_X3 -S_ZXMAS_TREE_X3 XMAS D* 5 NULL S_ZXMAS_TREE_X4 -S_ZXMAS_TREE_X4 XMAS E* 5 A_Explode S_ZXMAS_TREE_X5 -S_ZXMAS_TREE_X5 XMAS F* 5 NULL S_ZXMAS_TREE_X6 -S_ZXMAS_TREE_X6 XMAS G* 4 NULL S_ZXMAS_TREE_X7 -S_ZXMAS_TREE_X7 XMAS H 5 NULL S_ZXMAS_TREE_X8 -S_ZXMAS_TREE_X8 XMAS I 4 A_NoBlocking S_ZXMAS_TREE_X9 -S_ZXMAS_TREE_X9 XMAS J 4 NULL S_ZXMAS_TREE_X10 -S_ZXMAS_TREE_X10 XMAS K -1 NULL S_NULL - - -$ MT_ZCAULDRON -doomednum 8069 -spawnstate S_ZCAULDRON1 -radius 12 -height 26 -flags MF_SOLID - -$ MT_ZCAULDRON_UNLIT -doomednum 8070 -spawnstate S_ZCAULDRON_U -radius 12 -height 26 -flags MF_SOLID - -S_ZCAULDRON1 CDRN B* 4 NULL S_ZCAULDRON2 -S_ZCAULDRON2 CDRN C* 4 NULL S_ZCAULDRON3 -S_ZCAULDRON3 CDRN D* 4 NULL S_ZCAULDRON4 -S_ZCAULDRON4 CDRN E* 4 NULL S_ZCAULDRON5 -S_ZCAULDRON5 CDRN F* 4 NULL S_ZCAULDRON6 -S_ZCAULDRON6 CDRN G* 4 NULL S_ZCAULDRON7 -S_ZCAULDRON7 CDRN H* 4 NULL S_ZCAULDRON1 - -S_ZCAULDRON_U CDRN A -1 NULL S_NULL - - -$ MT_ZCHAINBIT32 -doomednum 8071 -spawnstate S_ZCHAINBIT32 -radius 4 -height 32 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SPAWNCEILING - -$ MT_ZCHAINBIT64 -doomednum 8072 -spawnstate S_ZCHAINBIT64 -radius 4 -height 64 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SPAWNCEILING - -$ MT_ZCHAINEND_HEART -doomednum 8073 -spawnstate S_ZCHAINEND_HEART -radius 4 -height 32 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SPAWNCEILING - -$ MT_ZCHAINEND_HOOK1 -doomednum 8074 -spawnstate S_ZCHAINEND_HOOK1 -radius 4 -height 32 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SPAWNCEILING - -$ MT_ZCHAINEND_HOOK2 -doomednum 8075 -spawnstate S_ZCHAINEND_HOOK2 -radius 4 -height 32 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SPAWNCEILING - -$ MT_ZCHAINEND_SPIKE -doomednum 8076 -spawnstate S_ZCHAINEND_SPIKE -radius 4 -height 32 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SPAWNCEILING - -$ MT_ZCHAINEND_SKULL -doomednum 8077 -spawnstate S_ZCHAINEND_SKULL -radius 4 -height 32 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SPAWNCEILING - -S_ZCHAINBIT32 CHNS A -1 NULL S_NULL -S_ZCHAINBIT64 CHNS B -1 NULL S_NULL -S_ZCHAINEND_HEART CHNS C -1 NULL S_NULL -S_ZCHAINEND_HOOK1 CHNS D -1 NULL S_NULL -S_ZCHAINEND_HOOK2 CHNS E -1 NULL S_NULL -S_ZCHAINEND_SPIKE CHNS F -1 NULL S_NULL -S_ZCHAINEND_SKULL CHNS G -1 NULL S_NULL - - -$ MT_TABLE_SHIT1 -doomednum 8500 -spawnstate S_TABLE_SHIT1 -flags MF_NOBLOCKMAP - -$ MT_TABLE_SHIT2 -doomednum 8501 -spawnstate S_TABLE_SHIT2 -flags MF_NOBLOCKMAP - -$ MT_TABLE_SHIT3 -doomednum 8502 -spawnstate S_TABLE_SHIT3 -flags MF_NOBLOCKMAP - -$ MT_TABLE_SHIT4 -doomednum 8503 -spawnstate S_TABLE_SHIT4 -flags MF_NOBLOCKMAP - -$ MT_TABLE_SHIT5 -doomednum 8504 -spawnstate S_TABLE_SHIT5 -flags MF_NOBLOCKMAP - -$ MT_TABLE_SHIT6 -doomednum 8505 -spawnstate S_TABLE_SHIT6 -flags MF_NOBLOCKMAP - -$ MT_TABLE_SHIT7 -doomednum 8506 -spawnstate S_TABLE_SHIT7 -flags MF_NOBLOCKMAP - -$ MT_TABLE_SHIT8 -doomednum 8507 -spawnstate S_TABLE_SHIT8 -flags MF_NOBLOCKMAP - -$ MT_TABLE_SHIT9 -doomednum 8508 -spawnstate S_TABLE_SHIT9 -flags MF_NOBLOCKMAP - -$ MT_TABLE_SHIT10 -doomednum 8509 -spawnstate S_TABLE_SHIT10 -flags MF_NOBLOCKMAP - -S_TABLE_SHIT1 TST1 A -1 NULL S_NULL -S_TABLE_SHIT2 TST2 A -1 NULL S_NULL -S_TABLE_SHIT3 TST3 A -1 NULL S_NULL -S_TABLE_SHIT4 TST4 A -1 NULL S_NULL -S_TABLE_SHIT5 TST5 A -1 NULL S_NULL -S_TABLE_SHIT6 TST6 A -1 NULL S_NULL -S_TABLE_SHIT7 TST7 A -1 NULL S_NULL -S_TABLE_SHIT8 TST8 A -1 NULL S_NULL -S_TABLE_SHIT9 TST9 A -1 NULL S_NULL -S_TABLE_SHIT10 TST0 A -1 NULL S_NULL - - -$ MT_TFOG -spawnstate S_TFOG1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -S_TFOG1 TELE A* 6 NULL S_TFOG2 -S_TFOG2 TELE B* 6 NULL S_TFOG3 -S_TFOG3 TELE C* 6 NULL S_TFOG4 -S_TFOG4 TELE D* 6 NULL S_TFOG5 -S_TFOG5 TELE E* 6 NULL S_TFOG6 -S_TFOG6 TELE F* 6 NULL S_TFOG7 -S_TFOG7 TELE G* 6 NULL S_TFOG8 -S_TFOG8 TELE H* 6 NULL S_TFOG9 -S_TFOG9 TELE G* 6 NULL S_TFOG10 -S_TFOG10 TELE F* 6 NULL S_TFOG11 -S_TFOG11 TELE E* 6 NULL S_TFOG12 -S_TFOG12 TELE D* 6 NULL S_TFOG13 -S_TFOG13 TELE C* 6 NULL S_NULL - - -$ + -doomednum 140 -spawnstate S_TELESMOKE1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -S_TELESMOKE1 TSMK A 4 NULL S_TELESMOKE2 -S_TELESMOKE2 TSMK B 3 NULL S_TELESMOKE3 -S_TELESMOKE3 TSMK C 4 NULL S_TELESMOKE4 -S_TELESMOKE4 TSMK D 3 NULL S_TELESMOKE5 -S_TELESMOKE5 TSMK E 4 NULL S_TELESMOKE6 -S_TELESMOKE6 TSMK F 3 NULL S_TELESMOKE7 -S_TELESMOKE7 TSMK G 4 NULL S_TELESMOKE8 -S_TELESMOKE8 TSMK H 3 NULL S_TELESMOKE9 -S_TELESMOKE9 TSMK I 4 NULL S_TELESMOKE10 -S_TELESMOKE10 TSMK J 3 NULL S_TELESMOKE11 -S_TELESMOKE11 TSMK K 4 NULL S_TELESMOKE12 -S_TELESMOKE12 TSMK L 3 NULL S_TELESMOKE13 -S_TELESMOKE13 TSMK M 4 NULL S_TELESMOKE14 -S_TELESMOKE14 TSMK N 3 NULL S_TELESMOKE15 -S_TELESMOKE15 TSMK O 4 NULL S_TELESMOKE16 -S_TELESMOKE16 TSMK P 3 NULL S_TELESMOKE17 -S_TELESMOKE17 TSMK Q 4 NULL S_TELESMOKE18 -S_TELESMOKE18 TSMK R 3 NULL S_TELESMOKE19 -S_TELESMOKE19 TSMK S 4 NULL S_TELESMOKE20 -S_TELESMOKE20 TSMK T 3 NULL S_TELESMOKE21 -S_TELESMOKE21 TSMK U 4 NULL S_TELESMOKE22 -S_TELESMOKE22 TSMK V 3 NULL S_TELESMOKE23 -S_TELESMOKE23 TSMK W 4 NULL S_TELESMOKE24 -S_TELESMOKE24 TSMK X 3 NULL S_TELESMOKE25 -S_TELESMOKE25 TSMK Y 4 NULL S_TELESMOKE26 -S_TELESMOKE26 TSMK Z 3 NULL S_TELESMOKE1 - - -$ MT_TELEPORTMAN -doomednum 14 -flags MF_NOBLOCKMAP|MF_NOSECTOR - -// -// Player sprite animations -// - -S_LIGHTDONE FPCH A 0 A_Light0 S_NULL - -// -// Fighter fist -// - -$ MT_PUNCHPUFF -spawnstate S_PUNCHPUFF1 -seesound FighterPunchHitThing -attacksound FighterPunchHitWall -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.66 - -S_PUNCHREADY FPCH A 1 A_WeaponReady S_PUNCHREADY -S_PUNCHDOWN FPCH A 1 A_Lower S_PUNCHDOWN -S_PUNCHUP FPCH A 1 A_Raise S_PUNCHUP - -S_PUNCHATK1_1 FPCH B 5 NULL S_PUNCHATK1_2 5 40 -S_PUNCHATK1_2 FPCH C 4 NULL S_PUNCHATK1_3 5 40 -S_PUNCHATK1_3 FPCH D 4 A_FPunchAttack S_PUNCHATK1_4 5 40 -S_PUNCHATK1_4 FPCH C 4 NULL S_PUNCHATK1_5 5 40 -S_PUNCHATK1_5 FPCH B 5 A_ReFire S_PUNCHREADY 5 40 -S_PUNCHATK2_1 FPCH D 4 NULL S_PUNCHATK2_2 5 40 -S_PUNCHATK2_2 FPCH E 4 NULL S_PUNCHATK2_3 5 40 -S_PUNCHATK2_3 FPCH E 1 NULL S_PUNCHATK2_4 15 50 -S_PUNCHATK2_4 FPCH E 1 NULL S_PUNCHATK2_5 25 60 -S_PUNCHATK2_5 FPCH E 1 NULL S_PUNCHATK2_6 35 70 -S_PUNCHATK2_6 FPCH E 1 NULL S_PUNCHATK2_7 45 80 -S_PUNCHATK2_7 FPCH E 1 NULL S_PUNCHATK2_8 55 90 -S_PUNCHATK2_8 FPCH E 1 NULL S_PUNCHATK2_9 65 100 -S_PUNCHATK2_9 FPCH E 10 NULL S_PUNCHREADY 0 150 - -S_PUNCHPUFF1 FHFX S 4 NULL S_PUNCHPUFF2 -S_PUNCHPUFF2 FHFX T 4 NULL S_PUNCHPUFF3 -S_PUNCHPUFF3 FHFX U 4 NULL S_PUNCHPUFF4 -S_PUNCHPUFF4 FHFX V 4 NULL S_PUNCHPUFF5 -S_PUNCHPUFF5 FHFX W 4 NULL S_NULL - -// -// Fighter axe -// - -$ MT_FW_AXE -doomednum 8010 -spawnstate S_AXE -flags MF_SPECIAL - -$ MT_AXEPUFF -spawnstate S_HAMMERPUFF1 -seesound FighterAxeHitThing -attacksound FighterHammerHitWall -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.33 - -$ MT_AXEPUFF_GLOW -spawnstate S_AXEPUFF_GLOW1 -seesound FighterAxeHitThing -attacksound FighterHammerHitWall -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -$ MT_AXEBLOOD -spawnstate S_AXEBLOOD1 -deathstate S_AXEBLOOD6 -radius 2 -height 4 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_CANNOTPUSH - -S_AXE WFAX A -1 NULL S_NULL - -S_FAXEREADY FAXE A 1 A_WeaponReady S_FAXEREADY -S_FAXEDOWN FAXE A 1 A_Lower S_FAXEDOWN -S_FAXEUP FAXE A 1 A_Raise S_FAXEUP - -S_FAXEATK_1 FAXE B 4 NULL S_FAXEATK_2 15 32 -S_FAXEATK_2 FAXE C 3 NULL S_FAXEATK_3 15 32 -S_FAXEATK_3 FAXE D 2 NULL S_FAXEATK_4 15 32 -S_FAXEATK_4 FAXE D 1 A_FAxeAttack S_FAXEATK_5 -5 70 -S_FAXEATK_5 FAXE D 2 NULL S_FAXEATK_6 -25 90 -S_FAXEATK_6 FAXE E 1 NULL S_FAXEATK_7 15 32 -S_FAXEATK_7 FAXE E 2 NULL S_FAXEATK_8 10 54 -S_FAXEATK_8 FAXE E 7 NULL S_FAXEATK_9 10 150 -S_FAXEATK_9 FAXE A 1 A_ReFire S_FAXEATK_10 0 60 -S_FAXEATK_10 FAXE A 1 NULL S_FAXEATK_11 0 52 -S_FAXEATK_11 FAXE A 1 NULL S_FAXEATK_12 0 44 -S_FAXEATK_12 FAXE A 1 NULL S_FAXEATK_13 0 36 -S_FAXEATK_13 FAXE A 1 NULL S_FAXEREADY - -S_FAXEREADY_G FAXE L 1 A_WeaponReady S_FAXEREADY_G1 -S_FAXEREADY_G1 FAXE L 1 A_WeaponReady S_FAXEREADY_G2 -S_FAXEREADY_G2 FAXE L 1 A_WeaponReady S_FAXEREADY_G3 -S_FAXEREADY_G3 FAXE M 1 A_WeaponReady S_FAXEREADY_G4 -S_FAXEREADY_G4 FAXE M 1 A_WeaponReady S_FAXEREADY_G5 -S_FAXEREADY_G5 FAXE M 1 A_WeaponReady S_FAXEREADY_G - -S_FAXEDOWN_G FAXE L 1 A_Lower S_FAXEDOWN_G - -S_FAXEUP_G FAXE L 1 A_Raise S_FAXEUP_G - -S_FAXEATK_G1 FAXE N 4 NULL S_FAXEATK_G2 15 32 -S_FAXEATK_G2 FAXE O 3 NULL S_FAXEATK_G3 15 32 -S_FAXEATK_G3 FAXE P 2 NULL S_FAXEATK_G4 15 32 -S_FAXEATK_G4 FAXE P 1 A_FAxeAttack S_FAXEATK_G5 -5 70 -S_FAXEATK_G5 FAXE P 2 NULL S_FAXEATK_G6 -25 90 -S_FAXEATK_G6 FAXE Q 1 NULL S_FAXEATK_G7 15 32 -S_FAXEATK_G7 FAXE Q 2 NULL S_FAXEATK_G8 10 54 -S_FAXEATK_G8 FAXE Q 7 NULL S_FAXEATK_G9 10 150 -S_FAXEATK_G9 FAXE A 1 A_ReFire S_FAXEATK_G10 0 60 -S_FAXEATK_G10 FAXE A 1 NULL S_FAXEATK_G11 0 52 -S_FAXEATK_G11 FAXE A 1 NULL S_FAXEATK_G12 0 44 -S_FAXEATK_G12 FAXE A 1 NULL S_FAXEATK_G13 0 36 -S_FAXEATK_G13 FAXE A 1 NULL S_FAXEREADY_G - -S_AXEPUFF_GLOW1 FAXE R* 4 NULL S_AXEPUFF_GLOW2 -S_AXEPUFF_GLOW2 FAXE S* 4 NULL S_AXEPUFF_GLOW3 -S_AXEPUFF_GLOW3 FAXE T* 4 NULL S_AXEPUFF_GLOW4 -S_AXEPUFF_GLOW4 FAXE U* 4 NULL S_AXEPUFF_GLOW5 -S_AXEPUFF_GLOW5 FAXE V* 4 NULL S_AXEPUFF_GLOW6 -S_AXEPUFF_GLOW6 FAXE W* 4 NULL S_AXEPUFF_GLOW7 -S_AXEPUFF_GLOW7 FAXE X* 4 NULL S_NULL - -S_AXEBLOOD1 FAXE F 3 NULL S_AXEBLOOD2 -S_AXEBLOOD2 FAXE G 3 NULL S_AXEBLOOD3 -S_AXEBLOOD3 FAXE H 3 NULL S_AXEBLOOD4 -S_AXEBLOOD4 FAXE I 3 NULL S_AXEBLOOD5 -S_AXEBLOOD5 FAXE J 3 NULL S_AXEBLOOD6 -S_AXEBLOOD6 FAXE K 3 NULL S_NULL - -// -// Fighter hammer -// - -$ MT_FW_HAMMER -doomednum 123 -spawnstate S_HAMM -flags MF_SPECIAL - -$ MT_HAMMER_MISSILE -spawnstate S_HAMMER_MISSILE_1 -deathstate S_HAMMER_MISSILE_X1 -deathsound FighterHammerExplode -speed 25 -radius 14 -height 20 -damage 10 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS|MF2_FIREDAMAGE - -$ MT_HAMMERPUFF -spawnstate S_HAMMERPUFF1 -seesound FighterHammerHitThing -attacksound FighterHammerHitWall -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.33 - -S_HAMM WFHM A -1 NULL S_NULL - -S_FHAMMERREADY FHMR A 1 A_WeaponReady S_FHAMMERREADY -S_FHAMMERDOWN FHMR A 1 A_Lower S_FHAMMERDOWN -S_FHAMMERUP FHMR A 1 A_Raise S_FHAMMERUP - -S_FHAMMERATK_1 FHMR B 6 NULL S_FHAMMERATK_2 5 -S_FHAMMERATK_2 FHMR C 3 A_FHammerAttack S_FHAMMERATK_3 5 -S_FHAMMERATK_3 FHMR D 3 NULL S_FHAMMERATK_4 5 -S_FHAMMERATK_4 FHMR E 2 NULL S_FHAMMERATK_5 5 -S_FHAMMERATK_5 FHMR E 10 A_FHammerThrow S_FHAMMERATK_6 5 150 -S_FHAMMERATK_6 FHMR A 1 NULL S_FHAMMERATK_7 0 60 -S_FHAMMERATK_7 FHMR A 1 NULL S_FHAMMERATK_8 0 55 -S_FHAMMERATK_8 FHMR A 1 NULL S_FHAMMERATK_9 0 50 -S_FHAMMERATK_9 FHMR A 1 NULL S_FHAMMERATK_10 0 45 -S_FHAMMERATK_10 FHMR A 1 NULL S_FHAMMERATK_11 0 40 -S_FHAMMERATK_11 FHMR A 1 NULL S_FHAMMERATK_12 0 35 -S_FHAMMERATK_12 FHMR A 1 NULL S_FHAMMERREADY - -S_HAMMER_MISSILE_1 FHFX A* 2 NULL S_HAMMER_MISSILE_2 -S_HAMMER_MISSILE_2 FHFX B* 2 A_ContMobjSound S_HAMMER_MISSILE_3 -S_HAMMER_MISSILE_3 FHFX C* 2 NULL S_HAMMER_MISSILE_4 -S_HAMMER_MISSILE_4 FHFX D* 2 NULL S_HAMMER_MISSILE_5 -S_HAMMER_MISSILE_5 FHFX E* 2 NULL S_HAMMER_MISSILE_6 -S_HAMMER_MISSILE_6 FHFX F* 2 NULL S_HAMMER_MISSILE_7 -S_HAMMER_MISSILE_7 FHFX G* 2 NULL S_HAMMER_MISSILE_8 -S_HAMMER_MISSILE_8 FHFX H* 2 NULL S_HAMMER_MISSILE_1 -S_HAMMER_MISSILE_X1 FHFX I* 3 NULL S_HAMMER_MISSILE_X2 -S_HAMMER_MISSILE_X2 FHFX J* 3 NULL S_HAMMER_MISSILE_X3 -S_HAMMER_MISSILE_X3 FHFX K* 3 A_Explode S_HAMMER_MISSILE_X4 -S_HAMMER_MISSILE_X4 FHFX L* 3 NULL S_HAMMER_MISSILE_X5 -S_HAMMER_MISSILE_X5 FHFX M* 3 NULL S_HAMMER_MISSILE_X6 -S_HAMMER_MISSILE_X6 FHFX N 3 NULL S_HAMMER_MISSILE_X7 -S_HAMMER_MISSILE_X7 FHFX O* 3 NULL S_HAMMER_MISSILE_X8 -S_HAMMER_MISSILE_X8 FHFX P* 3 NULL S_HAMMER_MISSILE_X9 -S_HAMMER_MISSILE_X9 FHFX Q* 3 NULL S_HAMMER_MISSILE_X10 -S_HAMMER_MISSILE_X10 FHFX R* 3 NULL S_NULL - -S_HAMMERPUFF1 FHFX S 4 NULL S_HAMMERPUFF2 -S_HAMMERPUFF2 FHFX T 4 NULL S_HAMMERPUFF3 -S_HAMMERPUFF3 FHFX U 4 NULL S_HAMMERPUFF4 -S_HAMMERPUFF4 FHFX V 4 NULL S_HAMMERPUFF5 -S_HAMMERPUFF5 FHFX W 4 NULL S_NULL - -// -// Fighter sword -// - -$ MT_FSWORD_MISSILE -spawnstate S_FSWORD_MISSILE1 -deathstate S_FSWORD_MISSILE_X1 -deathsound FighterSwordExplode -speed 30 -radius 16 -height 8 -damage 8 -flags MF_MISSILE|MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS - -$ MT_FSWORD_FLAME -spawnstate S_FSWORD_FLAME1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.33 - -S_FSWORDREADY FSRD A* 1 A_WeaponReady S_FSWORDREADY1 -S_FSWORDREADY1 FSRD A* 1 A_WeaponReady S_FSWORDREADY2 -S_FSWORDREADY2 FSRD A* 1 A_WeaponReady S_FSWORDREADY3 -S_FSWORDREADY3 FSRD A* 1 A_WeaponReady S_FSWORDREADY4 -S_FSWORDREADY4 FSRD B* 1 A_WeaponReady S_FSWORDREADY5 -S_FSWORDREADY5 FSRD B* 1 A_WeaponReady S_FSWORDREADY6 -S_FSWORDREADY6 FSRD B* 1 A_WeaponReady S_FSWORDREADY7 -S_FSWORDREADY7 FSRD B* 1 A_WeaponReady S_FSWORDREADY8 -S_FSWORDREADY8 FSRD C* 1 A_WeaponReady S_FSWORDREADY9 -S_FSWORDREADY9 FSRD C* 1 A_WeaponReady S_FSWORDREADY10 -S_FSWORDREADY10 FSRD C* 1 A_WeaponReady S_FSWORDREADY11 -S_FSWORDREADY11 FSRD C* 1 A_WeaponReady S_FSWORDREADY - -S_FSWORDDOWN FSRD A* 1 A_Lower S_FSWORDDOWN -S_FSWORDUP FSRD A* 1 A_Raise S_FSWORDUP - -S_FSWORDATK_1 FSRD D* 3 NULL S_FSWORDATK_2 5 36 -S_FSWORDATK_2 FSRD E* 3 NULL S_FSWORDATK_3 5 36 -S_FSWORDATK_3 FSRD F* 2 NULL S_FSWORDATK_4 5 36 -S_FSWORDATK_4 FSRD G* 3 A_FSwordAttack S_FSWORDATK_5 5 36 -S_FSWORDATK_5 FSRD H* 2 NULL S_FSWORDATK_6 5 36 -S_FSWORDATK_6 FSRD I* 2 NULL S_FSWORDATK_7 5 36 -S_FSWORDATK_7 FSRD I* 10 NULL S_FSWORDATK_8 5 150 -S_FSWORDATK_8 FSRD A* 1 NULL S_FSWORDATK_9 5 60 -S_FSWORDATK_9 FSRD B* 1 NULL S_FSWORDATK_10 5 55 -S_FSWORDATK_10 FSRD C* 1 NULL S_FSWORDATK_11 5 50 -S_FSWORDATK_11 FSRD A* 1 NULL S_FSWORDATK_12 5 45 -S_FSWORDATK_12 FSRD B* 1 NULL S_FSWORDREADY 5 40 - -S_FSWORD_MISSILE1 FSFX A* 3 NULL S_FSWORD_MISSILE2 -S_FSWORD_MISSILE2 FSFX B* 3 NULL S_FSWORD_MISSILE3 -S_FSWORD_MISSILE3 FSFX C* 3 NULL S_FSWORD_MISSILE1 -S_FSWORD_MISSILE_X1 FSFX D* 4 NULL S_FSWORD_MISSILE_X2 -S_FSWORD_MISSILE_X2 FSFX E* 3 A_FSwordFlames S_FSWORD_MISSILE_X3 -S_FSWORD_MISSILE_X3 FSFX F* 4 A_Explode S_FSWORD_MISSILE_X4 -S_FSWORD_MISSILE_X4 FSFX G* 3 NULL S_FSWORD_MISSILE_X5 -S_FSWORD_MISSILE_X5 FSFX H* 4 NULL S_FSWORD_MISSILE_X6 -S_FSWORD_MISSILE_X6 FSFX I* 3 NULL S_FSWORD_MISSILE_X7 -S_FSWORD_MISSILE_X7 FSFX J* 4 NULL S_FSWORD_MISSILE_X8 -S_FSWORD_MISSILE_X8 FSFX K* 3 NULL S_FSWORD_MISSILE_X9 -S_FSWORD_MISSILE_X9 FSFX L* 3 NULL S_FSWORD_MISSILE_X10 -S_FSWORD_MISSILE_X10 FSFX M* 3 NULL S_NULL - -S_FSWORD_FLAME1 FSFX N* 3 NULL S_FSWORD_FLAME2 -S_FSWORD_FLAME2 FSFX O* 3 NULL S_FSWORD_FLAME3 -S_FSWORD_FLAME3 FSFX P* 3 NULL S_FSWORD_FLAME4 -S_FSWORD_FLAME4 FSFX Q* 3 NULL S_FSWORD_FLAME5 -S_FSWORD_FLAME5 FSFX R* 3 NULL S_FSWORD_FLAME6 -S_FSWORD_FLAME6 FSFX S* 3 NULL S_FSWORD_FLAME7 -S_FSWORD_FLAME7 FSFX T* 3 NULL S_FSWORD_FLAME8 -S_FSWORD_FLAME8 FSFX U* 3 NULL S_FSWORD_FLAME9 -S_FSWORD_FLAME9 FSFX V* 3 NULL S_FSWORD_FLAME10 -S_FSWORD_FLAME10 FSFX W* 3 NULL S_NULL - -// -// Cleric mace -// - -S_CMACEREADY CMCE A 1 A_WeaponReady S_CMACEREADY -S_CMACEDOWN CMCE A 1 A_Lower S_CMACEDOWN -S_CMACEUP CMCE A 1 A_Raise S_CMACEUP - -S_CMACEATK_1 CMCE B 2 NULL S_CMACEATK_2 60 20 -S_CMACEATK_2 CMCE B 1 NULL S_CMACEATK_3 30 33 -S_CMACEATK_3 CMCE B 2 NULL S_CMACEATK_4 8 45 -S_CMACEATK_4 CMCE C 1 NULL S_CMACEATK_5 8 45 -S_CMACEATK_5 CMCE D 1 NULL S_CMACEATK_6 8 45 -S_CMACEATK_6 CMCE E 1 NULL S_CMACEATK_7 8 45 -S_CMACEATK_7 CMCE E 1 A_CMaceAttack S_CMACEATK_8 -11 58 -S_CMACEATK_8 CMCE F 1 NULL S_CMACEATK_9 8 45 -S_CMACEATK_9 CMCE F 2 NULL S_CMACEATK_10 -8 74 -S_CMACEATK_10 CMCE F 1 NULL S_CMACEATK_11 -20 96 -S_CMACEATK_11 CMCE F 8 NULL S_CMACEATK_12 -33 160 -S_CMACEATK_12 CMCE A 2 A_ReFire S_CMACEATK_13 8 75 -S_CMACEATK_13 CMCE A 1 NULL S_CMACEATK_14 8 65 -S_CMACEATK_14 CMCE A 2 NULL S_CMACEATK_15 8 60 -S_CMACEATK_15 CMCE A 1 NULL S_CMACEATK_16 8 55 -S_CMACEATK_16 CMCE A 2 NULL S_CMACEATK_17 8 50 -S_CMACEATK_17 CMCE A 1 NULL S_CMACEREADY 8 45 - -// -// Cleric serpeant staff -// - -$ MT_CW_SERPSTAFF -doomednum 10 -spawnstate S_CSTAFF -flags MF_SPECIAL - -$ MT_CSTAFF_MISSILE -spawnstate S_CSTAFF_MISSILE1 -deathstate S_CSTAFF_MISSILE_X1 -deathsound ClericCStaffExplode -speed 22 -radius 12 -height 10 -damage 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS - -$ MT_CSTAFFPUFF -spawnstate S_CSTAFFPUFF1 -seesound ClericCStaffHitThing -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.33 - -S_CSTAFF WCSS A -1 NULL S_NULL - -S_CSTAFFREADY CSSF C 4 NULL S_CSTAFFREADY1 -S_CSTAFFREADY1 CSSF B 3 A_CStaffInitBlink S_CSTAFFREADY2 -S_CSTAFFREADY2 CSSF A 1 A_WeaponReady S_CSTAFFREADY3 -S_CSTAFFREADY3 CSSF A 1 A_WeaponReady S_CSTAFFREADY4 -S_CSTAFFREADY4 CSSF A 1 A_WeaponReady S_CSTAFFREADY5 -S_CSTAFFREADY5 CSSF A 1 A_WeaponReady S_CSTAFFREADY6 -S_CSTAFFREADY6 CSSF A 1 A_WeaponReady S_CSTAFFREADY7 -S_CSTAFFREADY7 CSSF A 1 A_WeaponReady S_CSTAFFREADY8 -S_CSTAFFREADY8 CSSF A 1 A_WeaponReady S_CSTAFFREADY9 -S_CSTAFFREADY9 CSSF A 1 A_CStaffCheckBlink S_CSTAFFREADY2 - -S_CSTAFFBLINK1 CSSF B 1 A_WeaponReady S_CSTAFFBLINK2 -S_CSTAFFBLINK2 CSSF B 1 A_WeaponReady S_CSTAFFBLINK3 -S_CSTAFFBLINK3 CSSF B 1 A_WeaponReady S_CSTAFFBLINK4 -S_CSTAFFBLINK4 CSSF C 1 A_WeaponReady S_CSTAFFBLINK5 -S_CSTAFFBLINK5 CSSF C 1 A_WeaponReady S_CSTAFFBLINK6 -S_CSTAFFBLINK6 CSSF C 1 A_WeaponReady S_CSTAFFBLINK7 -S_CSTAFFBLINK7 CSSF C 1 A_WeaponReady S_CSTAFFBLINK8 -S_CSTAFFBLINK8 CSSF C 1 A_WeaponReady S_CSTAFFBLINK9 -S_CSTAFFBLINK9 CSSF B 1 A_WeaponReady S_CSTAFFBLINK10 -S_CSTAFFBLINK10 CSSF B 1 A_WeaponReady S_CSTAFFBLINK11 -S_CSTAFFBLINK11 CSSF B 1 A_WeaponReady S_CSTAFFREADY2 - -S_CSTAFFDOWN CSSF B 3 NULL S_CSTAFFDOWN2 -S_CSTAFFDOWN2 CSSF C 4 NULL S_CSTAFFDOWN3 -S_CSTAFFDOWN3 CSSF C 1 A_Lower S_CSTAFFDOWN3 - -S_CSTAFFUP CSSF C 1 A_Raise S_CSTAFFUP - -S_CSTAFFATK_1 CSSF A 1 A_CStaffCheck S_CSTAFFATK_2 0 45 -S_CSTAFFATK_2 CSSF J 1 A_CStaffAttack S_CSTAFFATK_3 0 50 -S_CSTAFFATK_3 CSSF J 2 NULL S_CSTAFFATK_4 0 50 -S_CSTAFFATK_4 CSSF J 2 NULL S_CSTAFFATK_5 0 45 -S_CSTAFFATK_5 CSSF A 2 NULL S_CSTAFFATK_6 0 40 -S_CSTAFFATK_6 CSSF A 2 NULL S_CSTAFFREADY2 0 36 -S_CSTAFFATK2_1 CSSF K 10 NULL S_CSTAFFREADY2 0 36 - -S_CSTAFF_MISSILE1 CSSF D* 1 A_CStaffMissileSlither S_CSTAFF_MISSILE2 -S_CSTAFF_MISSILE2 CSSF D* 1 A_CStaffMissileSlither S_CSTAFF_MISSILE3 -S_CSTAFF_MISSILE3 CSSF E* 1 A_CStaffMissileSlither S_CSTAFF_MISSILE4 -S_CSTAFF_MISSILE4 CSSF E* 1 A_CStaffMissileSlither S_CSTAFF_MISSILE1 -S_CSTAFF_MISSILE_X1 CSSF F* 4 NULL S_CSTAFF_MISSILE_X2 -S_CSTAFF_MISSILE_X2 CSSF G* 4 NULL S_CSTAFF_MISSILE_X3 -S_CSTAFF_MISSILE_X3 CSSF H* 3 NULL S_CSTAFF_MISSILE_X4 -S_CSTAFF_MISSILE_X4 CSSF I* 3 NULL S_NULL - -S_CSTAFFPUFF1 FHFX S 4 NULL S_CSTAFFPUFF2 -S_CSTAFFPUFF2 FHFX T 4 NULL S_CSTAFFPUFF3 -S_CSTAFFPUFF3 FHFX U 4 NULL S_CSTAFFPUFF4 -S_CSTAFFPUFF4 FHFX V 4 NULL S_CSTAFFPUFF5 -S_CSTAFFPUFF5 FHFX W 4 NULL S_NULL - -// -// Cleric fire -// - -$ MT_CW_FLAME -doomednum 8009 -spawnstate S_CFLAME1 -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_CFLAMEFLOOR -spawnstate S_CFLAMEFLOOR1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -$ MT_FLAMEPUFF -spawnstate S_FLAMEPUFF1 -seesound ClericFlameExplode -attacksound ClericFlameExplode -radius 1 -height 1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -$ MT_FLAMEPUFF2 -spawnstate S_FLAMEPUFF2_1 -seesound ClericFlameExplode -attacksound ClericFlameExplode -radius 1 -height 1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -$ MT_CIRCLEFLAME -spawnstate S_CIRCLE_FLAME1 -deathstate S_CIRCLE_FLAME_X1 -deathsound ClericFlameCircle -radius 6 -damage 2 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FIREDAMAGE - -$ MT_CFLAME_MISSILE -spawnstate S_CFLAME_MISSILE1 -deathstate S_CFLAME_MISSILE_X -speed 200 -radius 14 -height 8 -damage 8 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS|MF2_DONTDRAW|MF2_FIREDAMAGE - -S_CFLAME1 WCFM A* 4 NULL S_CFLAME2 -S_CFLAME2 WCFM B* 4 NULL S_CFLAME3 -S_CFLAME3 WCFM C* 4 NULL S_CFLAME4 -S_CFLAME4 WCFM D* 4 NULL S_CFLAME5 -S_CFLAME5 WCFM E* 4 NULL S_CFLAME6 -S_CFLAME6 WCFM F* 4 NULL S_CFLAME7 -S_CFLAME7 WCFM G* 4 NULL S_CFLAME8 -S_CFLAME8 WCFM H* 4 NULL S_CFLAME1 - -S_CFLAMEREADY1 CFLM A 1 A_WeaponReady S_CFLAMEREADY2 -S_CFLAMEREADY2 CFLM A 1 A_WeaponReady S_CFLAMEREADY3 -S_CFLAMEREADY3 CFLM A 1 A_WeaponReady S_CFLAMEREADY4 -S_CFLAMEREADY4 CFLM A 1 A_WeaponReady S_CFLAMEREADY5 -S_CFLAMEREADY5 CFLM B 1 A_WeaponReady S_CFLAMEREADY6 -S_CFLAMEREADY6 CFLM B 1 A_WeaponReady S_CFLAMEREADY7 -S_CFLAMEREADY7 CFLM B 1 A_WeaponReady S_CFLAMEREADY8 -S_CFLAMEREADY8 CFLM B 1 A_WeaponReady S_CFLAMEREADY9 -S_CFLAMEREADY9 CFLM C 1 A_WeaponReady S_CFLAMEREADY10 -S_CFLAMEREADY10 CFLM C 1 A_WeaponReady S_CFLAMEREADY11 -S_CFLAMEREADY11 CFLM C 1 A_WeaponReady S_CFLAMEREADY12 -S_CFLAMEREADY12 CFLM C 1 A_WeaponReady S_CFLAMEREADY1 - -S_CFLAMEDOWN CFLM A 1 A_Lower S_CFLAMEDOWN -S_CFLAMEUP CFLM A 1 A_Raise S_CFLAMEUP - -S_CFLAMEATK_1 CFLM A 2 NULL S_CFLAMEATK_2 0 40 -S_CFLAMEATK_2 CFLM D 2 NULL S_CFLAMEATK_3 0 50 -S_CFLAMEATK_3 CFLM D 2 NULL S_CFLAMEATK_4 0 36 -S_CFLAMEATK_4 CFLM E* 4 NULL S_CFLAMEATK_5 -S_CFLAMEATK_5 CFLM F* 4 A_CFlameAttack S_CFLAMEATK_6 -S_CFLAMEATK_6 CFLM E* 4 NULL S_CFLAMEATK_7 -S_CFLAMEATK_7 CFLM G 2 NULL S_CFLAMEATK_8 0 40 -S_CFLAMEATK_8 CFLM G 2 NULL S_CFLAMEREADY1 - -S_CFLAMEFLOOR1 CFFX N* 5 NULL S_CFLAMEFLOOR2 -S_CFLAMEFLOOR2 CFFX O* 4 NULL S_CFLAMEFLOOR3 -S_CFLAMEFLOOR3 CFFX P* 3 NULL S_NULL - -S_FLAMEPUFF1 CFFX A* 3 NULL S_FLAMEPUFF2 -S_FLAMEPUFF2 CFFX B* 3 NULL S_FLAMEPUFF3 -S_FLAMEPUFF3 CFFX C* 3 NULL S_FLAMEPUFF4 -S_FLAMEPUFF4 CFFX D* 4 NULL S_FLAMEPUFF5 -S_FLAMEPUFF5 CFFX E* 3 NULL S_FLAMEPUFF6 -S_FLAMEPUFF6 CFFX F* 4 NULL S_FLAMEPUFF7 -S_FLAMEPUFF7 CFFX G* 3 NULL S_FLAMEPUFF8 -S_FLAMEPUFF8 CFFX H* 4 NULL S_FLAMEPUFF9 -S_FLAMEPUFF9 CFFX I* 3 NULL S_FLAMEPUFF10 -S_FLAMEPUFF10 CFFX J* 4 NULL S_FLAMEPUFF11 -S_FLAMEPUFF11 CFFX K* 3 NULL S_FLAMEPUFF12 -S_FLAMEPUFF12 CFFX L* 4 NULL S_FLAMEPUFF13 -S_FLAMEPUFF13 CFFX M* 3 NULL S_NULL - -S_FLAMEPUFF2_1 CFFX A* 3 NULL S_FLAMEPUFF2_2 -S_FLAMEPUFF2_2 CFFX B* 3 NULL S_FLAMEPUFF2_3 -S_FLAMEPUFF2_3 CFFX C* 3 NULL S_FLAMEPUFF2_4 -S_FLAMEPUFF2_4 CFFX D* 4 NULL S_FLAMEPUFF2_5 -S_FLAMEPUFF2_5 CFFX E* 3 NULL S_FLAMEPUFF2_6 -S_FLAMEPUFF2_6 CFFX F* 4 NULL S_FLAMEPUFF2_7 -S_FLAMEPUFF2_7 CFFX G* 3 NULL S_FLAMEPUFF2_8 -S_FLAMEPUFF2_8 CFFX H* 4 NULL S_FLAMEPUFF2_9 -S_FLAMEPUFF2_9 CFFX I* 3 NULL S_FLAMEPUFF2_10 -S_FLAMEPUFF2_10 CFFX C* 3 NULL S_FLAMEPUFF2_11 -S_FLAMEPUFF2_11 CFFX D* 4 NULL S_FLAMEPUFF2_12 -S_FLAMEPUFF2_12 CFFX E* 3 NULL S_FLAMEPUFF2_13 -S_FLAMEPUFF2_13 CFFX F* 4 NULL S_FLAMEPUFF2_14 -S_FLAMEPUFF2_14 CFFX G* 3 NULL S_FLAMEPUFF2_15 -S_FLAMEPUFF2_15 CFFX H* 4 NULL S_FLAMEPUFF2_16 -S_FLAMEPUFF2_16 CFFX I* 3 NULL S_FLAMEPUFF2_17 -S_FLAMEPUFF2_17 CFFX J* 4 NULL S_FLAMEPUFF2_18 -S_FLAMEPUFF2_18 CFFX K* 3 NULL S_FLAMEPUFF2_19 -S_FLAMEPUFF2_19 CFFX L* 4 NULL S_FLAMEPUFF2_20 -S_FLAMEPUFF2_20 CFFX M* 3 NULL S_NULL - -S_CIRCLE_FLAME1 CFCF A* 4 NULL S_CIRCLE_FLAME2 -S_CIRCLE_FLAME2 CFCF B* 2 A_CFlameRotate S_CIRCLE_FLAME3 -S_CIRCLE_FLAME3 CFCF C* 2 NULL S_CIRCLE_FLAME4 -S_CIRCLE_FLAME4 CFCF D* 1 NULL S_CIRCLE_FLAME5 -S_CIRCLE_FLAME5 CFCF E* 2 NULL S_CIRCLE_FLAME6 -S_CIRCLE_FLAME6 CFCF F* 2 A_CFlameRotate S_CIRCLE_FLAME7 -S_CIRCLE_FLAME7 CFCF G* 1 NULL S_CIRCLE_FLAME8 -S_CIRCLE_FLAME8 CFCF H* 2 NULL S_CIRCLE_FLAME9 -S_CIRCLE_FLAME9 CFCF I* 2 NULL S_CIRCLE_FLAME10 -S_CIRCLE_FLAME10 CFCF J* 1 A_CFlameRotate S_CIRCLE_FLAME11 -S_CIRCLE_FLAME11 CFCF K* 2 NULL S_CIRCLE_FLAME12 -S_CIRCLE_FLAME12 CFCF L* 3 NULL S_CIRCLE_FLAME13 -S_CIRCLE_FLAME13 CFCF M* 3 NULL S_CIRCLE_FLAME14 -S_CIRCLE_FLAME14 CFCF N* 2 A_CFlameRotate S_CIRCLE_FLAME15 -S_CIRCLE_FLAME15 CFCF O* 3 NULL S_CIRCLE_FLAME16 -S_CIRCLE_FLAME16 CFCF P* 2 NULL S_NULL - -S_CIRCLE_FLAME_X1 CFCF Q* 3 NULL S_CIRCLE_FLAME_X2 -S_CIRCLE_FLAME_X2 CFCF R* 3 NULL S_CIRCLE_FLAME_X3 -S_CIRCLE_FLAME_X3 CFCF S* 3 A_Explode S_CIRCLE_FLAME_X4 -S_CIRCLE_FLAME_X4 CFCF T* 3 NULL S_CIRCLE_FLAME_X5 -S_CIRCLE_FLAME_X5 CFCF U* 3 NULL S_CIRCLE_FLAME_X6 -S_CIRCLE_FLAME_X6 CFCF V* 3 NULL S_CIRCLE_FLAME_X7 -S_CIRCLE_FLAME_X7 CFCF W* 3 NULL S_CIRCLE_FLAME_X8 -S_CIRCLE_FLAME_X8 CFCF X* 3 NULL S_CIRCLE_FLAME_X9 -S_CIRCLE_FLAME_X9 CFCF Y* 3 NULL S_CIRCLE_FLAME_X10 -S_CIRCLE_FLAME_X10 CFCF Z* 3 NULL S_NULL - -S_CFLAME_MISSILE1 CFFX A* 4 NULL S_CFLAME_MISSILE2 -S_CFLAME_MISSILE2 CFFX A 1 A_CFlamePuff S_FLAMEPUFF1 -S_CFLAME_MISSILE_X CFFX A* 1 A_CFlameMissile S_FLAMEPUFF1 - -// -// Cleric (is quite a) holy (guy, yes?) -// - -$ MT_HOLY_FX -spawnstate S_HOLY_FX1 -spawnhealth 105 -deathstate S_HOLY_FX_X1 -deathsound SpiritDie -speed 12 -radius 10 -height 6 -damage 3 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_NOGRAVITY|MF_MISSILE -flags2 MF2_NOTELEPORT|MF2_SEEKERMISSILE|MF2_RIP|MF2_IMPACT|MF2_PCROSS -translucency 0.66 - -$ MT_HOLY_TAIL -spawnstate S_HOLY_TAIL1 -radius 1 -height 1 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_NOGRAVITY|MF_NOCLIP -flags2 MF2_NOTELEPORT -translucency 0.66 - -$ MT_HOLY_PUFF -spawnstate S_HOLY_PUFF1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.33 - -$ MT_HOLY_MISSILE -spawnstate S_HOLY_MISSILE1 -deathstate S_HOLY_MISSILE_X -speed 30 -radius 15 -height 8 -damage 4 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_NOGRAVITY|MF_MISSILE -flags2 MF2_NOTELEPORT - -$ MT_HOLY_MISSILE_PUFF -spawnstate S_HOLY_MISSILE_P1 -radius 4 -height 8 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT -translucency 0.66 - -S_CHOLYREADY CHLY A 1 A_WeaponReady S_CHOLYREADY -S_CHOLYDOWN CHLY A 1 A_Lower S_CHOLYDOWN -S_CHOLYUP CHLY A 1 A_Raise S_CHOLYUP - -S_CHOLYATK_1 CHLY A* 1 NULL S_CHOLYATK_2 0 40 -S_CHOLYATK_2 CHLY B* 1 NULL S_CHOLYATK_3 0 40 -S_CHOLYATK_3 CHLY C* 2 NULL S_CHOLYATK_4 0 43 -S_CHOLYATK_4 CHLY D* 2 NULL S_CHOLYATK_5 0 43 -S_CHOLYATK_5 CHLY E* 2 NULL S_CHOLYATK_6 0 45 -S_CHOLYATK_6 CHLY F* 6 A_CHolyAttack S_CHOLYATK_7 0 48 -S_CHOLYATK_7 CHLY G* 2 A_CHolyPalette S_CHOLYATK_8 0 40 -S_CHOLYATK_8 CHLY G* 2 A_CHolyPalette S_CHOLYATK_9 0 40 -S_CHOLYATK_9 CHLY G* 2 A_CHolyPalette S_CHOLYREADY 0 36 - -S_HOLY_FX1 SPIR A 2 A_CHolySeek S_HOLY_FX2 -S_HOLY_FX2 SPIR A 2 A_CHolySeek S_HOLY_FX3 -S_HOLY_FX3 SPIR B 2 A_CHolySeek S_HOLY_FX4 -S_HOLY_FX4 SPIR B 2 A_CHolyCheckScream S_HOLY_FX1 - -S_HOLY_FX_X1 SPIR D 4 NULL S_HOLY_FX_X2 -S_HOLY_FX_X2 SPIR E 4 A_Scream S_HOLY_FX_X3 -S_HOLY_FX_X3 SPIR F 4 NULL S_HOLY_FX_X4 -S_HOLY_FX_X4 SPIR G 4 NULL S_HOLY_FX_X5 -S_HOLY_FX_X5 SPIR H 4 NULL S_HOLY_FX_X6 -S_HOLY_FX_X6 SPIR I 4 NULL S_NULL - -S_HOLY_TAIL1 SPIR C 1 A_CHolyTail S_HOLY_TAIL1 -S_HOLY_TAIL2 SPIR D -1 NULL S_NULL - -S_HOLY_PUFF1 SPIR K 3 NULL S_HOLY_PUFF2 -S_HOLY_PUFF2 SPIR L 3 NULL S_HOLY_PUFF3 -S_HOLY_PUFF3 SPIR M 3 NULL S_HOLY_PUFF4 -S_HOLY_PUFF4 SPIR N 3 NULL S_HOLY_PUFF5 -S_HOLY_PUFF5 SPIR O 3 NULL S_NULL - -S_HOLY_MISSILE1 SPIR P* 3 A_CHolySpawnPuff S_HOLY_MISSILE2 -S_HOLY_MISSILE2 SPIR P* 3 A_CHolySpawnPuff S_HOLY_MISSILE3 -S_HOLY_MISSILE3 SPIR P* 3 A_CHolySpawnPuff S_HOLY_MISSILE4 -S_HOLY_MISSILE4 SPIR P* 3 A_CHolySpawnPuff S_HOLY_MISSILE_X -S_HOLY_MISSILE_X SPIR P* 1 A_CHolyAttack2 S_NULL - -S_HOLY_MISSILE_P1 SPIR Q 3 NULL S_HOLY_MISSILE_P2 -S_HOLY_MISSILE_P2 SPIR R 3 NULL S_HOLY_MISSILE_P3 -S_HOLY_MISSILE_P3 SPIR S 3 NULL S_HOLY_MISSILE_P4 -S_HOLY_MISSILE_P4 SPIR T 3 NULL S_HOLY_MISSILE_P5 -S_HOLY_MISSILE_P5 SPIR U 3 NULL S_NULL - -// -// Mage wand -// - -$ MT_MWANDPUFF -spawnstate S_MWANDPUFF1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_CANNOTPUSH|MF2_NODMGTHRUST - -$ MT_MWANDSMOKE -spawnstate S_MWANDSMOKE1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SHADO -flags2 MF2_NOTELEPORT|MF2_CANNOTPUSH|MF2_NODMGTHRUST - -$ MT_MWAND_MISSILE -spawnstate S_MWAND_MISSILE1 -deathstate S_MWANDPUFF1 -speed 184 -radius 12 -height 8 -damage 2 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_RIP|MF2_IMPACT|MF2_PCROSS|MF2_NODMGTHRUST|MF2_CANNOTPUSH - -S_MWANDREADY MWND A 1 A_WeaponReady S_MWANDREADY -S_MWANDDOWN MWND A 1 A_Lower S_MWANDDOWN -S_MWANDUP MWND A 1 A_Raise S_MWANDUP - -S_MWANDATK_1 MWND A 6 NULL S_MWANDATK_2 -S_MWANDATK_2 MWND B* 6 A_MWandAttack S_MWANDATK_3 0 48 -S_MWANDATK_3 MWND A 3 NULL S_MWANDATK_4 0 40 -S_MWANDATK_4 MWND A 3 A_ReFire S_MWANDREADY 0 36 - -S_MWANDPUFF1 MWND E* 4 NULL S_MWANDPUFF2 -S_MWANDPUFF2 MWND F* 3 NULL S_MWANDPUFF3 -S_MWANDPUFF3 MWND G* 4 NULL S_MWANDPUFF4 -S_MWANDPUFF4 MWND H* 3 NULL S_MWANDPUFF5 -S_MWANDPUFF5 MWND I* 4 NULL S_NULL - -S_MWANDSMOKE1 MWND C 4 NULL S_MWANDSMOKE2 -S_MWANDSMOKE2 MWND D 4 NULL S_MWANDSMOKE3 -S_MWANDSMOKE3 MWND C 4 NULL S_MWANDSMOKE4 -S_MWANDSMOKE4 MWND D 4 NULL S_NULL - -S_MWAND_MISSILE1 MWND C* 4 NULL S_MWAND_MISSILE2 -S_MWAND_MISSILE2 MWND D* 4 NULL S_MWAND_MISSILE1 - -// -// Mage lightning -// - -$ MT_MW_LIGHTNING -doomednum 8040 -spawnstate S_MW_LIGHTNING1 -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_LIGHTNING_CEILING -spawnstate S_LIGHTNING_CEILING1 -spawnhealth 144 -deathstate S_LIGHTNING_C_X1 -speed 25 -radius 16 -height 40 -damage 8 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS - -$ MT_LIGHTNING_FLOOR -spawnstate S_LIGHTNING_FLOOR1 -spawnhealth 144 -deathstate S_LIGHTNING_F_X1 -speed 25 -radius 16 -height 40 -damage 8 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS - -$ MT_LIGHTNING_ZAP -spawnstate S_LIGHTNING_ZAP1 -deathstate S_LIGHTNING_ZAP_X8 -radius 15 -height 35 -damage 2 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE|MF_DROPOFF - -S_MW_LIGHTNING1 WMLG A* 4 NULL S_MW_LIGHTNING2 -S_MW_LIGHTNING2 WMLG B* 4 NULL S_MW_LIGHTNING3 -S_MW_LIGHTNING3 WMLG C* 4 NULL S_MW_LIGHTNING4 -S_MW_LIGHTNING4 WMLG D* 4 NULL S_MW_LIGHTNING5 -S_MW_LIGHTNING5 WMLG E* 4 NULL S_MW_LIGHTNING6 -S_MW_LIGHTNING6 WMLG F* 4 NULL S_MW_LIGHTNING7 -S_MW_LIGHTNING7 WMLG G* 4 NULL S_MW_LIGHTNING8 -S_MW_LIGHTNING8 WMLG H* 4 NULL S_MW_LIGHTNING1 - -S_MLIGHTNINGREADY MLNG A* 1 A_WeaponReady S_MLIGHTNINGREADY2 -S_MLIGHTNINGREADY2 MLNG A* 1 A_WeaponReady S_MLIGHTNINGREADY3 -S_MLIGHTNINGREADY3 MLNG A* 1 A_WeaponReady S_MLIGHTNINGREADY4 -S_MLIGHTNINGREADY4 MLNG A* 1 A_WeaponReady S_MLIGHTNINGREADY5 -S_MLIGHTNINGREADY5 MLNG A* 1 A_WeaponReady S_MLIGHTNINGREADY6 -S_MLIGHTNINGREADY6 MLNG A* 1 A_LightningReady S_MLIGHTNINGREADY7 -S_MLIGHTNINGREADY7 MLNG B* 1 A_WeaponReady S_MLIGHTNINGREADY8 -S_MLIGHTNINGREADY8 MLNG B* 1 A_WeaponReady S_MLIGHTNINGREADY9 -S_MLIGHTNINGREADY9 MLNG B* 1 A_WeaponReady S_MLIGHTNINGREADY10 -S_MLIGHTNINGREADY10 MLNG B* 1 A_WeaponReady S_MLIGHTNINGREADY11 -S_MLIGHTNINGREADY11 MLNG B* 1 A_WeaponReady S_MLIGHTNINGREADY12 -S_MLIGHTNINGREADY12 MLNG B* 1 A_WeaponReady S_MLIGHTNINGREADY13 -S_MLIGHTNINGREADY13 MLNG C* 1 A_WeaponReady S_MLIGHTNINGREADY14 -S_MLIGHTNINGREADY14 MLNG C* 1 A_WeaponReady S_MLIGHTNINGREADY15 -S_MLIGHTNINGREADY15 MLNG C* 1 A_WeaponReady S_MLIGHTNINGREADY16 -S_MLIGHTNINGREADY16 MLNG C* 1 A_WeaponReady S_MLIGHTNINGREADY17 -S_MLIGHTNINGREADY17 MLNG C* 1 A_WeaponReady S_MLIGHTNINGREADY18 -S_MLIGHTNINGREADY18 MLNG C* 1 A_LightningReady S_MLIGHTNINGREADY19 -S_MLIGHTNINGREADY19 MLNG B* 1 A_WeaponReady S_MLIGHTNINGREADY20 -S_MLIGHTNINGREADY20 MLNG B* 1 A_WeaponReady S_MLIGHTNINGREADY21 -S_MLIGHTNINGREADY21 MLNG B* 1 A_WeaponReady S_MLIGHTNINGREADY22 -S_MLIGHTNINGREADY22 MLNG B* 1 A_WeaponReady S_MLIGHTNINGREADY23 -S_MLIGHTNINGREADY23 MLNG B* 1 A_WeaponReady S_MLIGHTNINGREADY24 -S_MLIGHTNINGREADY24 MLNG B* 1 A_WeaponReady S_MLIGHTNINGREADY - -S_MLIGHTNINGDOWN MLNG A* 1 A_Lower S_MLIGHTNINGDOWN -S_MLIGHTNINGUP MLNG A* 1 A_Raise S_MLIGHTNINGUP - -S_MLIGHTNINGATK_1 MLNG D* 3 NULL S_MLIGHTNINGATK_2 -S_MLIGHTNINGATK_2 MLNG E* 3 NULL S_MLIGHTNINGATK_3 -S_MLIGHTNINGATK_3 MLNG F* 4 A_MLightningAttack S_MLIGHTNINGATK_4 -S_MLIGHTNINGATK_4 MLNG G* 4 NULL S_MLIGHTNINGATK_5 -S_MLIGHTNINGATK_5 MLNG H* 3 NULL S_MLIGHTNINGATK_6 -S_MLIGHTNINGATK_6 MLNG I* 3 NULL S_MLIGHTNINGATK_7 -S_MLIGHTNINGATK_7 MLNG I* 6 NULL S_MLIGHTNINGATK_8 0 199 -S_MLIGHTNINGATK_8 MLNG C* 2 NULL S_MLIGHTNINGATK_9 0 55 -S_MLIGHTNINGATK_9 MLNG B* 2 NULL S_MLIGHTNINGATK_10 0 50 -S_MLIGHTNINGATK_10 MLNG B* 2 NULL S_MLIGHTNINGATK_11 0 45 -S_MLIGHTNINGATK_11 MLNG B* 2 NULL S_MLIGHTNINGREADY 0 40 - -S_LIGHTNING_CEILING1 MLFX A* 2 A_LightningZap S_LIGHTNING_CEILING2 -S_LIGHTNING_CEILING2 MLFX B* 2 A_LightningClip S_LIGHTNING_CEILING3 -S_LIGHTNING_CEILING3 MLFX C* 2 A_LightningClip S_LIGHTNING_CEILING4 -S_LIGHTNING_CEILING4 MLFX D* 2 A_LightningClip S_LIGHTNING_CEILING1 - -S_LIGHTNING_C_X1 MLF2 A* 2 A_LightningRemove S_LIGHTNING_C_X2 -S_LIGHTNING_C_X2 MLF2 B* 3 NULL S_LIGHTNING_C_X3 -S_LIGHTNING_C_X3 MLF2 C* 3 NULL S_LIGHTNING_C_X4 -S_LIGHTNING_C_X4 MLF2 D* 3 NULL S_LIGHTNING_C_X5 -S_LIGHTNING_C_X5 MLF2 E* 3 NULL S_LIGHTNING_C_X6 -S_LIGHTNING_C_X6 MLF2 K* 3 NULL S_LIGHTNING_C_X7 -S_LIGHTNING_C_X7 MLF2 L* 3 NULL S_LIGHTNING_C_X8 -S_LIGHTNING_C_X8 MLF2 M* 3 NULL S_LIGHTNING_C_X9 -S_LIGHTNING_C_X9 ACLO E 35 NULL S_LIGHTNING_C_X10 -S_LIGHTNING_C_X10 MLF2 N* 3 NULL S_LIGHTNING_C_X11 -S_LIGHTNING_C_X11 MLF2 O* 3 NULL S_LIGHTNING_C_X12 -S_LIGHTNING_C_X12 MLF2 P* 4 NULL S_LIGHTNING_C_X13 -S_LIGHTNING_C_X13 MLF2 Q* 3 NULL S_LIGHTNING_C_X14 -S_LIGHTNING_C_X14 MLF2 P* 3 NULL S_LIGHTNING_C_X15 -S_LIGHTNING_C_X15 MLF2 Q* 4 NULL S_LIGHTNING_C_X16 -S_LIGHTNING_C_X16 MLF2 P* 3 NULL S_LIGHTNING_C_X17 -S_LIGHTNING_C_X17 MLF2 O* 3 NULL S_LIGHTNING_C_X18 -S_LIGHTNING_C_X18 MLF2 P* 3 NULL S_LIGHTNING_C_X19 -S_LIGHTNING_C_X19 MLF2 P* 1 A_HideThing S_FREETARGMOBJ - -S_LIGHTNING_FLOOR1 MLFX E* 2 A_LightningZap S_LIGHTNING_FLOOR2 -S_LIGHTNING_FLOOR2 MLFX F* 2 A_LightningClip S_LIGHTNING_FLOOR3 -S_LIGHTNING_FLOOR3 MLFX G* 2 A_LightningClip S_LIGHTNING_FLOOR4 -S_LIGHTNING_FLOOR4 MLFX H* 2 A_LightningClip S_LIGHTNING_FLOOR1 - -S_LIGHTNING_F_X1 MLF2 F* 2 A_LightningRemove S_LIGHTNING_F_X2 -S_LIGHTNING_F_X2 MLF2 G* 3 NULL S_LIGHTNING_F_X3 -S_LIGHTNING_F_X3 MLF2 H* 3 NULL S_LIGHTNING_F_X4 -S_LIGHTNING_F_X4 MLF2 I* 3 NULL S_LIGHTNING_F_X5 -S_LIGHTNING_F_X5 MLF2 J* 3 NULL S_LIGHTNING_F_X6 -S_LIGHTNING_F_X6 MLF2 K* 3 NULL S_LIGHTNING_F_X7 -S_LIGHTNING_F_X7 MLF2 L* 3 NULL S_LIGHTNING_F_X8 -S_LIGHTNING_F_X8 MLF2 M* 3 NULL S_LIGHTNING_F_X9 -S_LIGHTNING_F_X9 ACLO E 20 NULL S_LIGHTNING_F_X10 -S_LIGHTNING_F_X10 MLF2 N* 3 NULL S_LIGHTNING_F_X11 -S_LIGHTNING_F_X11 MLF2 O* 3 NULL S_LIGHTNING_F_X12 -S_LIGHTNING_F_X12 MLF2 P* 4 NULL S_LIGHTNING_F_X13 -S_LIGHTNING_F_X13 MLF2 Q* 3 NULL S_LIGHTNING_F_X14 -S_LIGHTNING_F_X14 MLF2 P* 3 NULL S_LIGHTNING_F_X15 -S_LIGHTNING_F_X15 MLF2 Q* 4 A_LastZap S_LIGHTNING_F_X16 -S_LIGHTNING_F_X16 MLF2 P* 3 NULL S_LIGHTNING_F_X17 -S_LIGHTNING_F_X17 MLF2 O* 3 NULL S_LIGHTNING_F_X18 -S_LIGHTNING_F_X18 MLF2 P* 3 NULL S_LIGHTNING_F_X19 -S_LIGHTNING_F_X19 MLF2 P* 1 A_HideThing S_FREETARGMOBJ - -S_LIGHTNING_ZAP1 MLFX I* 2 A_ZapMimic S_LIGHTNING_ZAP2 -S_LIGHTNING_ZAP2 MLFX J* 2 A_ZapMimic S_LIGHTNING_ZAP3 -S_LIGHTNING_ZAP3 MLFX K* 2 A_ZapMimic S_LIGHTNING_ZAP4 -S_LIGHTNING_ZAP4 MLFX L* 2 A_ZapMimic S_LIGHTNING_ZAP5 -S_LIGHTNING_ZAP5 MLFX M* 2 A_ZapMimic S_LIGHTNING_ZAP1 - -S_LIGHTNING_ZAP_X1 MLFX N* 2 NULL S_LIGHTNING_ZAP_X2 -S_LIGHTNING_ZAP_X2 MLFX O* 2 NULL S_LIGHTNING_ZAP_X3 -S_LIGHTNING_ZAP_X3 MLFX P* 2 NULL S_LIGHTNING_ZAP_X4 -S_LIGHTNING_ZAP_X4 MLFX Q* 2 NULL S_LIGHTNING_ZAP_X5 -S_LIGHTNING_ZAP_X5 MLFX R* 2 NULL S_LIGHTNING_ZAP_X6 -S_LIGHTNING_ZAP_X6 MLFX S* 2 NULL S_LIGHTNING_ZAP_X7 -S_LIGHTNING_ZAP_X7 MLFX T* 2 NULL S_LIGHTNING_ZAP_X8 -S_LIGHTNING_ZAP_X8 MLFX U* 2 NULL S_NULL - -// -// Mage staff -// - -$ MT_MSTAFF_FX -spawnstate S_MSTAFF_FX1_1 -deathstate S_MSTAFF_FX_X1 -deathsound MageStaffExplode -speed 20 -radius 16 -height 8 -damage 6 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FIREDAMAGE|MF2_RIP|MF2_IMPACT|MF2_PCROSS - -$ MT_MSTAFF_FX2 -spawnstate S_MSTAFF_FX2_1 -deathstate S_MSTAFF_FX2_X1 -deathsound MageStaffExplode -speed 17 -height 8 -damage 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FIREDAMAGE|MF2_IMPACT|MF2_PCROSS|MF2_SEEKERMISSILE - -S_MSTAFFREADY MSTF A 1 A_WeaponReady S_MSTAFFREADY2 -S_MSTAFFREADY2 MSTF A 1 A_WeaponReady S_MSTAFFREADY3 -S_MSTAFFREADY3 MSTF A 1 A_WeaponReady S_MSTAFFREADY4 -S_MSTAFFREADY4 MSTF A 1 A_WeaponReady S_MSTAFFREADY5 -S_MSTAFFREADY5 MSTF A 1 A_WeaponReady S_MSTAFFREADY6 -S_MSTAFFREADY6 MSTF A 1 A_WeaponReady S_MSTAFFREADY7 -S_MSTAFFREADY7 MSTF B 1 A_WeaponReady S_MSTAFFREADY8 -S_MSTAFFREADY8 MSTF B 1 A_WeaponReady S_MSTAFFREADY9 -S_MSTAFFREADY9 MSTF B 1 A_WeaponReady S_MSTAFFREADY10 -S_MSTAFFREADY10 MSTF B 1 A_WeaponReady S_MSTAFFREADY11 -S_MSTAFFREADY11 MSTF B 1 A_WeaponReady S_MSTAFFREADY12 -S_MSTAFFREADY12 MSTF B 1 A_WeaponReady S_MSTAFFREADY13 -S_MSTAFFREADY13 MSTF C 1 A_WeaponReady S_MSTAFFREADY14 -S_MSTAFFREADY14 MSTF C 1 A_WeaponReady S_MSTAFFREADY15 -S_MSTAFFREADY15 MSTF C 1 A_WeaponReady S_MSTAFFREADY16 -S_MSTAFFREADY16 MSTF C 1 A_WeaponReady S_MSTAFFREADY17 -S_MSTAFFREADY17 MSTF C 1 A_WeaponReady S_MSTAFFREADY18 -S_MSTAFFREADY18 MSTF C 1 A_WeaponReady S_MSTAFFREADY19 -S_MSTAFFREADY19 MSTF D 1 A_WeaponReady S_MSTAFFREADY20 -S_MSTAFFREADY20 MSTF D 1 A_WeaponReady S_MSTAFFREADY21 -S_MSTAFFREADY21 MSTF D 1 A_WeaponReady S_MSTAFFREADY22 -S_MSTAFFREADY22 MSTF D 1 A_WeaponReady S_MSTAFFREADY23 -S_MSTAFFREADY23 MSTF D 1 A_WeaponReady S_MSTAFFREADY24 -S_MSTAFFREADY24 MSTF D 1 A_WeaponReady S_MSTAFFREADY25 -S_MSTAFFREADY25 MSTF E 1 A_WeaponReady S_MSTAFFREADY26 -S_MSTAFFREADY26 MSTF E 1 A_WeaponReady S_MSTAFFREADY27 -S_MSTAFFREADY27 MSTF E 1 A_WeaponReady S_MSTAFFREADY28 -S_MSTAFFREADY28 MSTF E 1 A_WeaponReady S_MSTAFFREADY29 -S_MSTAFFREADY29 MSTF E 1 A_WeaponReady S_MSTAFFREADY30 -S_MSTAFFREADY30 MSTF E 1 A_WeaponReady S_MSTAFFREADY31 -S_MSTAFFREADY31 MSTF F 1 A_WeaponReady S_MSTAFFREADY32 -S_MSTAFFREADY32 MSTF F 1 A_WeaponReady S_MSTAFFREADY33 -S_MSTAFFREADY33 MSTF F 1 A_WeaponReady S_MSTAFFREADY34 -S_MSTAFFREADY34 MSTF F 1 A_WeaponReady S_MSTAFFREADY35 -S_MSTAFFREADY35 MSTF F 1 A_WeaponReady S_MSTAFFREADY - -S_MSTAFFDOWN MSTF A 1 A_Lower S_MSTAFFDOWN -S_MSTAFFUP MSTF A 1 A_Raise S_MSTAFFUP - -S_MSTAFFATK_1 MSTF G 4 NULL S_MSTAFFATK_2 0 40 -S_MSTAFFATK_2 MSTF H* 4 A_MStaffAttack S_MSTAFFATK_3 0 48 -S_MSTAFFATK_3 MSTF H* 2 A_MStaffPalette S_MSTAFFATK_4 0 48 -S_MSTAFFATK_4 MSTF I 2 A_MStaffPalette S_MSTAFFATK_5 0 48 -S_MSTAFFATK_5 MSTF I 2 A_MStaffPalette S_MSTAFFATK_6 0 48 -S_MSTAFFATK_6 MSTF I 1 NULL S_MSTAFFATK_7 0 40 -S_MSTAFFATK_7 MSTF J 5 NULL S_MSTAFFREADY 0 36 - -S_MSTAFF_FX1_1 MSP1 A* 3 A_MStaffWeave S_MSTAFF_FX1_2 -S_MSTAFF_FX1_2 MSP1 B* 3 A_MStaffWeave S_MSTAFF_FX1_3 -S_MSTAFF_FX1_3 MSP1 C* 3 A_MStaffWeave S_MSTAFF_FX1_4 -S_MSTAFF_FX1_4 MSP1 D* 3 A_MStaffWeave S_MSTAFF_FX1_5 -S_MSTAFF_FX1_5 MSP1 E* 3 A_MStaffWeave S_MSTAFF_FX1_6 -S_MSTAFF_FX1_6 MSP1 F* 3 A_MStaffWeave S_MSTAFF_FX1_1 - -S_MSTAFF_FX_X1 MSP1 G* 4 NULL S_MSTAFF_FX_X2 -S_MSTAFF_FX_X2 MSP1 H* 5 A_Explode S_MSTAFF_FX_X3 -S_MSTAFF_FX_X3 MSP1 I* 4 NULL S_MSTAFF_FX_X4 -S_MSTAFF_FX_X4 MSP1 J* 5 NULL S_MSTAFF_FX_X5 -S_MSTAFF_FX_X5 MSP1 K* 4 NULL S_MSTAFF_FX_X6 -S_MSTAFF_FX_X6 MSP1 L* 5 NULL S_MSTAFF_FX_X7 -S_MSTAFF_FX_X7 MSP1 M* 4 NULL S_MSTAFF_FX_X8 -S_MSTAFF_FX_X8 MSP1 N* 5 NULL S_MSTAFF_FX_X9 -S_MSTAFF_FX_X9 MSP1 O* 4 NULL S_MSTAFF_FX_X10 -S_MSTAFF_FX_X10 MSP1 P* 4 NULL S_NULL - -S_MSTAFF_FX2_1 MSP2 A* 2 A_MStaffTrack S_MSTAFF_FX2_2 -S_MSTAFF_FX2_2 MSP2 B* 2 A_MStaffTrack S_MSTAFF_FX2_3 -S_MSTAFF_FX2_3 MSP2 C* 2 A_MStaffTrack S_MSTAFF_FX2_4 -S_MSTAFF_FX2_4 MSP2 D* 2 A_MStaffTrack S_MSTAFF_FX2_1 - -S_MSTAFF_FX2_X1 MSP2 E* 4 NULL S_MSTAFF_FX2_X2 -S_MSTAFF_FX2_X2 MSP2 F* 5 A_Explode S_MSTAFF_FX2_X3 -S_MSTAFF_FX2_X3 MSP2 G* 5 NULL S_MSTAFF_FX2_X4 -S_MSTAFF_FX2_X4 MSP2 H* 5 NULL S_MSTAFF_FX2_X5 -S_MSTAFF_FX2_X5 MSP2 I* 4 NULL S_NULL - -// -// super weapon pieces -// - -$ MT_FW_SWORD1 -doomednum 12 -spawnstate S_FSWORD1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -$ MT_FW_SWORD2 -doomednum 13 -spawnstate S_FSWORD2 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -$ MT_FW_SWORD3 -doomednum 16 -spawnstate S_FSWORD3 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_FSWORD1 WFR1 A* -1 NULL S_NULL -S_FSWORD2 WFR2 A* -1 NULL S_NULL -S_FSWORD3 WFR3 A* -1 NULL S_NULL - - -$ MT_CW_HOLY1 -doomednum 18 -spawnstate S_CHOLY1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -$ MT_CW_HOLY2 -doomednum 19 -spawnstate S_CHOLY2 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -$ MT_CW_HOLY3 -doomednum 20 -spawnstate S_CHOLY3 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_CHOLY1 WCH1 A* -1 NULL S_NULL -S_CHOLY2 WCH2 A* -1 NULL S_NULL -S_CHOLY3 WCH3 A* -1 NULL S_NULL - - -$ MT_MW_STAFF1 -doomednum 21 -spawnstate S_MSTAFF1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -$ MT_MW_STAFF2 -doomednum 22 -spawnstate S_MSTAFF2 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -$ MT_MW_STAFF3 -doomednum 23 -spawnstate S_MSTAFF3 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_MSTAFF1 WMS1 A* -1 NULL S_NULL -S_MSTAFF2 WMS2 A* -1 NULL S_NULL -S_MSTAFF3 WMS3 A* -1 NULL S_NULL - -// -// Pig view -// - -$ MT_SNOUTPUFF -spawnstate S_PUNCHPUFF1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.33 - -S_SNOUTREADY WPIG A 1 A_WeaponReady S_SNOUTREADY -S_SNOUTDOWN WPIG A 1 A_Lower S_SNOUTDOWN -S_SNOUTUP WPIG A 1 A_Raise S_SNOUTUP - -S_SNOUTATK1 WPIG A 4 A_SnoutAttack S_SNOUTATK2 -S_SNOUTATK2 WPIG B 8 A_SnoutAttack S_SNOUTREADY - -// -// Mage frost shards -// - -$ MT_MW_CONE -doomednum 53 -spawnstate S_COS1 -flags MF_SPECIAL - -$ MT_SHARDFX1 -spawnstate S_SHARDFX1_1 -deathstate S_SHARDFXE1_1 -deathsound MageShardsExplode -speed 25 -radius 13 -height 8 -damage 1 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS|MF2_ICEDAMAGE - -S_COS1 WMCS A* 8 NULL S_COS2 -S_COS2 WMCS B* 8 NULL S_COS3 -S_COS3 WMCS C* 8 NULL S_COS1 - -S_CONEREADY CONE A 1 A_WeaponReady S_CONEREADY -S_CONEDOWN CONE A 1 A_Lower S_CONEDOWN -S_CONEUP CONE A 1 A_Raise S_CONEUP - -S_CONEATK1_1 CONE B 3 NULL S_CONEATK1_2 -S_CONEATK1_2 CONE C 4 NULL S_CONEATK1_3 -S_CONEATK1_3 CONE D 3 NULL S_CONEATK1_4 -S_CONEATK1_4 CONE E 5 NULL S_CONEATK1_5 -S_CONEATK1_5 CONE F 3 A_FireConePL1 S_CONEATK1_6 -S_CONEATK1_6 CONE G 3 NULL S_CONEATK1_7 -S_CONEATK1_7 CONE A 9 NULL S_CONEATK1_8 -S_CONEATK1_8 CONE A 10 A_ReFire S_CONEREADY - -S_SHARDFX1_1 SHRD A* 2 NULL S_SHARDFX1_2 -S_SHARDFX1_2 SHRD A* 3 A_ShedShard S_SHARDFX1_3 -S_SHARDFX1_3 SHRD B* 3 NULL S_SHARDFX1_4 -S_SHARDFX1_4 SHRD C* 3 NULL S_SHARDFX1_1 - -S_SHARDFXE1_1 SHEX A* 5 NULL S_SHARDFXE1_2 -S_SHARDFXE1_2 SHEX B* 5 NULL S_SHARDFXE1_3 -S_SHARDFXE1_3 SHEX C* 5 NULL S_SHARDFXE1_4 -S_SHARDFXE1_4 SHEX D* 5 NULL S_SHARDFXE1_5 -S_SHARDFXE1_5 SHEX E* 5 NULL S_NULL - -// -// bloody stuff -// - - -$ MT_BLOOD -spawnstate S_BLOOD1 -mass 5 -flags MF_NOBLOCKMAP - -$ MT_BLOODSPLATTER -spawnstate S_BLOODSPLATTER1 -deathstate S_BLOODSPLATTERX -radius 2 -height 4 -mass 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_CANNOTPUSH - -$ MT_GIBS -spawnstate S_GIBS1 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT -S_BLOOD1 BLOD C 8 NULL S_BLOOD2 -S_BLOOD2 BLOD B 8 NULL S_BLOOD3 -S_BLOOD3 BLOD A 8 NULL S_NULL - -S_BLOODSPLATTER1 BLOD C 8 NULL S_BLOODSPLATTER2 -S_BLOODSPLATTER2 BLOD B 8 NULL S_BLOODSPLATTER3 -S_BLOODSPLATTER3 BLOD A 8 NULL S_NULL - -S_BLOODSPLATTERX BLOD A 6 NULL S_NULL - -S_GIBS1 GIBS A -1 NULL S_NULL - - -// -// The Fighter -// - -$ MT_PLAYER_FIGHTER -spawnstate S_FPLAY -spawnhealth 100 -seestate S_FPLAY_RUN1 -reactiontime 0 -painstate S_FPLAY_PAIN -painchance 255 -painsound PlayerFighterPain -missilestate S_FPLAY_ATK1 -deathstate S_FPLAY_DIE1 -xdeathstate S_FPLAY_XDIE1 -radius 16 -height 64 -flags MF_SOLID|MF_SHOOTABLE|MF_DROPOFF|MF_PICKUP|MF_NOTDMATCH -flags2 MF2_WINDTHRUST|MF2_FLOORCLIP|MF2_SLIDE|MF2_PASSMOBJ|MF2_TELESTOMP|MF2_PUSHWALL - -S_FPLAY PLAY A -1 NULL S_NULL - -S_FPLAY_RUN1 PLAY A 4 NULL S_FPLAY_RUN2 -S_FPLAY_RUN2 PLAY B 4 NULL S_FPLAY_RUN3 -S_FPLAY_RUN3 PLAY C 4 NULL S_FPLAY_RUN4 -S_FPLAY_RUN4 PLAY D 4 NULL S_FPLAY_RUN1 - -S_FPLAY_ATK1 PLAY E 8 NULL S_FPLAY_ATK2 -S_FPLAY_ATK2 PLAY F 8 NULL S_FPLAY - -S_FPLAY_PAIN PLAY G 4 NULL S_FPLAY_PAIN2 -S_FPLAY_PAIN2 PLAY G 4 A_Pain S_FPLAY - -S_FPLAY_DIE1 PLAY H 6 NULL S_FPLAY_DIE2 -S_FPLAY_DIE2 PLAY I 6 A_Scream S_FPLAY_DIE3 -S_FPLAY_DIE3 PLAY J 6 NULL S_FPLAY_DIE4 -S_FPLAY_DIE4 PLAY K 6 NULL S_FPLAY_DIE5 -S_FPLAY_DIE5 PLAY L 6 A_NoBlocking S_FPLAY_DIE6 -S_FPLAY_DIE6 PLAY M 6 NULL S_FPLAY_DIE7 -S_FPLAY_DIE7 PLAY N -1 A_AddPlayerCorpse S_NULL - -S_FPLAY_XDIE1 PLAY O 5 A_Scream S_FPLAY_XDIE2 -S_FPLAY_XDIE2 PLAY P 5 A_SkullPop S_FPLAY_XDIE3 -S_FPLAY_XDIE3 PLAY R 5 A_NoBlocking S_FPLAY_XDIE4 -S_FPLAY_XDIE4 PLAY S 5 NULL S_FPLAY_XDIE5 -S_FPLAY_XDIE5 PLAY T 5 NULL S_FPLAY_XDIE6 -S_FPLAY_XDIE6 PLAY U 5 NULL S_FPLAY_XDIE7 -S_FPLAY_XDIE7 PLAY V 5 NULL S_FPLAY_XDIE8 -S_FPLAY_XDIE8 PLAY W -1 A_AddPlayerCorpse S_NULL - -S_FPLAY_ICE PLAY X 5 A_FreezeDeath S_FPLAY_ICE2 -S_FPLAY_ICE2 PLAY X 1 A_FreezeDeathChunks S_FPLAY_ICE2 - -// fighter fire death -S_PLAY_F_FDTH1 FDTH A* 5 NULL S_PLAY_F_FDTH2 -S_PLAY_F_FDTH2 FDTH B* 4 NULL S_PLAY_FDTH3 - -// cleric fire death -S_PLAY_C_FDTH1 FDTH C* 5 NULL S_PLAY_C_FDTH2 -S_PLAY_C_FDTH2 FDTH D* 4 NULL S_PLAY_FDTH3 - -// mage fire death -S_PLAY_M_FDTH1 FDTH E* 5 NULL S_PLAY_M_FDTH2 -S_PLAY_M_FDTH2 FDTH F* 4 NULL S_PLAY_FDTH3 - -// generic fire death -S_PLAY_FDTH3 FDTH G* 5 NULL S_PLAY_FDTH4 -S_PLAY_FDTH4 FDTH H* 4 A_Scream S_PLAY_FDTH5 -S_PLAY_FDTH5 FDTH I* 5 NULL S_PLAY_FDTH6 -S_PLAY_FDTH6 FDTH J* 4 NULL S_PLAY_FDTH7 -S_PLAY_FDTH7 FDTH K* 5 NULL S_PLAY_FDTH8 -S_PLAY_FDTH8 FDTH L* 4 NULL S_PLAY_FDTH9 -S_PLAY_FDTH9 FDTH M* 5 NULL S_PLAY_FDTH10 -S_PLAY_FDTH10 FDTH N* 4 NULL S_PLAY_FDTH11 -S_PLAY_FDTH11 FDTH O* 5 NULL S_PLAY_FDTH12 -S_PLAY_FDTH12 FDTH P* 4 NULL S_PLAY_FDTH13 -S_PLAY_FDTH13 FDTH Q* 5 NULL S_PLAY_FDTH14 -S_PLAY_FDTH14 FDTH R* 4 NULL S_PLAY_FDTH15 -S_PLAY_FDTH15 FDTH S* 5 A_NoBlocking S_PLAY_FDTH16 -S_PLAY_FDTH16 FDTH T* 4 NULL S_PLAY_FDTH17 -S_PLAY_FDTH17 FDTH U* 5 NULL S_PLAY_FDTH18 -S_PLAY_FDTH18 FDTH V* 4 NULL S_PLAY_FDTH19 -S_PLAY_FDTH19 ACLO E 35 A_CheckBurnGone S_PLAY_FDTH19 -S_PLAY_FDTH20 ACLO E 8 NULL S_NULL - -// -// a player's skull -// - -$ MT_BLOODYSKULL -spawnstate S_BLOODYSKULL1 -radius 4 -height 4 -flags MF_NOBLOCKMAP|MF_DROPOFF -flags2 MF2_LOGRAV|MF2_CANNOTPUSH - -S_BLOODYSKULL1 BSKL A 5 A_CheckSkullFloor S_BLOODYSKULL2 -S_BLOODYSKULL2 BSKL B 5 A_CheckSkullFloor S_BLOODYSKULL3 -S_BLOODYSKULL3 BSKL C 5 A_CheckSkullFloor S_BLOODYSKULL4 -S_BLOODYSKULL4 BSKL D 5 A_CheckSkullFloor S_BLOODYSKULL5 -S_BLOODYSKULL5 BSKL F 5 A_CheckSkullFloor S_BLOODYSKULL6 -S_BLOODYSKULL6 BSKL G 5 A_CheckSkullFloor S_BLOODYSKULL7 -S_BLOODYSKULL7 BSKL H 5 A_CheckSkullFloor S_BLOODYSKULL1 -S_BLOODYSKULLX1 BSKL I 16 A_CheckSkullDone S_BLOODYSKULLX1 -S_BLOODYSKULLX2 BSKL I 1050 NULL S_NULL - -// -// a speeding player's blur -// -$ MT_PLAYER_SPEED -spawnstate S_PLAYER_SPEED1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.66 - -S_PLAYER_SPEED1 PLAY A 5 NULL S_PLAYER_SPEED2 -S_PLAYER_SPEED2 PLAY A 3 A_SpeedFade S_NULL - -// -// ice chunk -// - -$ MT_ICECHUNK -spawnstate S_ICECHUNK1 -radius 3 -height 4 -flags MF_NOBLOCKMAP|MF_DROPOFF -flags2 MF2_LOGRAV|MF2_CANNOTPUSH|MF2_FLOORCLIP - -S_ICECHUNK1 ICEC A 10 NULL S_ICECHUNK2 -S_ICECHUNK2 ICEC B 10 A_IceSetTics S_ICECHUNK3 -S_ICECHUNK3 ICEC C 10 A_IceSetTics S_ICECHUNK4 -S_ICECHUNK4 ICEC D 10 A_IceSetTics S_NULL - -// an ice chunk containing the player's eyes -S_ICECHUNK_HEAD ICEC A 10 A_IceCheckHeadDone S_ICECHUNK_HEAD -S_ICECHUNK_HEAD2 ICEC A 1050 NULL S_NULL - - -// -// The Cleric -// - -$ MT_PLAYER_CLERIC -spawnstate S_CPLAY -spawnhealth 100 -seestate S_CPLAY_RUN1 -reactiontime 0 -painstate S_CPLAY_PAIN -painchance 255 -painsound PlayerClericPain -missilestate S_CPLAY_ATK1 -deathstate S_CPLAY_DIE1 -xdeathstate S_CPLAY_XDIE1 -radius 16 -height 64 -flags MF_SOLID|MF_SHOOTABLE|MF_DROPOFF|MF_PICKUP|MF_NOTDMATCH -flags2 MF2_WINDTHRUST|MF2_FLOORCLIP|MF2_SLIDE|MF2_PASSMOBJ|MF2_TELESTOMP|MF2_PUSHWALL - -S_CPLAY CLER A -1 NULL S_NULL - -S_CPLAY_RUN1 CLER A 4 NULL S_CPLAY_RUN2 -S_CPLAY_RUN2 CLER B 4 NULL S_CPLAY_RUN3 -S_CPLAY_RUN3 CLER C 4 NULL S_CPLAY_RUN4 -S_CPLAY_RUN4 CLER D 4 NULL S_CPLAY_RUN1 - -S_CPLAY_ATK1 CLER E 6 NULL S_CPLAY_ATK2 -S_CPLAY_ATK2 CLER F 6 NULL S_CPLAY_ATK3 -S_CPLAY_ATK3 CLER G 6 NULL S_CPLAY - -S_CPLAY_PAIN CLER H 4 NULL S_CPLAY_PAIN2 -S_CPLAY_PAIN2 CLER H 4 A_Pain S_CPLAY - -S_CPLAY_DIE1 CLER I 6 NULL S_CPLAY_DIE2 -S_CPLAY_DIE2 CLER K 6 A_Scream S_CPLAY_DIE3 -S_CPLAY_DIE3 CLER L 6 NULL S_CPLAY_DIE4 -S_CPLAY_DIE4 CLER L 6 NULL S_CPLAY_DIE5 -S_CPLAY_DIE5 CLER M 6 A_NoBlocking S_CPLAY_DIE6 -S_CPLAY_DIE6 CLER N 6 NULL S_CPLAY_DIE7 -S_CPLAY_DIE7 CLER O 6 NULL S_CPLAY_DIE8 -S_CPLAY_DIE8 CLER P 6 NULL S_CPLAY_DIE9 -S_CPLAY_DIE9 CLER Q -1 A_AddPlayerCorpse S_NULL - -S_CPLAY_XDIE1 CLER R 5 A_Scream S_CPLAY_XDIE2 -S_CPLAY_XDIE2 CLER S 5 NULL S_CPLAY_XDIE3 -S_CPLAY_XDIE3 CLER T 5 A_NoBlocking S_CPLAY_XDIE4 -S_CPLAY_XDIE4 CLER U 5 NULL S_CPLAY_XDIE5 -S_CPLAY_XDIE5 CLER V 5 NULL S_CPLAY_XDIE6 -S_CPLAY_XDIE6 CLER W 5 NULL S_CPLAY_XDIE7 -S_CPLAY_XDIE7 CLER X 5 NULL S_CPLAY_XDIE8 -S_CPLAY_XDIE8 CLER Y 5 NULL S_CPLAY_XDIE9 -S_CPLAY_XDIE9 CLER Z 5 NULL S_CPLAY_XDIE10 -S_CPLAY_XDIE10 CLER [ -1 A_AddPlayerCorpse S_NULL - -S_CPLAY_ICE CLER \ 5 A_FreezeDeath S_CPLAY_ICE2 -S_CPLAY_ICE2 CLER \ 1 A_FreezeDeathChunks S_CPLAY_ICE2 - - -// -// The Mage -// - -$ MT_PLAYER_MAGE -spawnstate S_MPLAY -spawnhealth 100 -seestate S_MPLAY_RUN1 -reactiontime 0 -painstate S_MPLAY_PAIN -painchance 255 -painsound PlayerMagePain -missilestate S_MPLAY_ATK1 -deathstate S_MPLAY_DIE1 -xdeathstate S_MPLAY_XDIE1 -radius 16 -height 64 -flags MF_SOLID|MF_SHOOTABLE|MF_DROPOFF|MF_PICKUP|MF_NOTDMATCH -flags2 MF2_WINDTHRUST|MF2_FLOORCLIP|MF2_SLIDE|MF2_PASSMOBJ|MF2_TELESTOMP|MF2_PUSHWALL - -S_MPLAY MAGE A -1 NULL S_NULL -S_MPLAY_RUN1 MAGE A 4 NULL S_MPLAY_RUN2 -S_MPLAY_RUN2 MAGE B 4 NULL S_MPLAY_RUN3 -S_MPLAY_RUN3 MAGE C 4 NULL S_MPLAY_RUN4 -S_MPLAY_RUN4 MAGE D 4 NULL S_MPLAY_RUN1 - -S_MPLAY_ATK1 MAGE E 8 NULL S_MPLAY_ATK2 -S_MPLAY_ATK2 MAGE F* 8 NULL S_MPLAY - -S_MPLAY_PAIN MAGE G 4 NULL S_MPLAY_PAIN2 -S_MPLAY_PAIN2 MAGE G 4 A_Pain S_MPLAY - -S_MPLAY_DIE1 MAGE H 6 NULL S_MPLAY_DIE2 -S_MPLAY_DIE2 MAGE I 6 A_Scream S_MPLAY_DIE3 -S_MPLAY_DIE3 MAGE J 6 NULL S_MPLAY_DIE4 -S_MPLAY_DIE4 MAGE K 6 NULL S_MPLAY_DIE5 -S_MPLAY_DIE5 MAGE L 6 A_NoBlocking S_MPLAY_DIE6 -S_MPLAY_DIE6 MAGE M 6 NULL S_MPLAY_DIE7 -S_MPLAY_DIE7 MAGE N -1 A_AddPlayerCorpse S_NULL - -S_MPLAY_XDIE1 MAGE O 5 A_Scream S_MPLAY_XDIE2 -S_MPLAY_XDIE2 MAGE P 5 NULL S_MPLAY_XDIE3 -S_MPLAY_XDIE3 MAGE R 5 A_NoBlocking S_MPLAY_XDIE4 -S_MPLAY_XDIE4 MAGE S 5 NULL S_MPLAY_XDIE5 -S_MPLAY_XDIE5 MAGE T 5 NULL S_MPLAY_XDIE6 -S_MPLAY_XDIE6 MAGE U 5 NULL S_MPLAY_XDIE7 -S_MPLAY_XDIE7 MAGE V 5 NULL S_MPLAY_XDIE8 -S_MPLAY_XDIE8 MAGE W 5 NULL S_MPLAY_XDIE9 -S_MPLAY_XDIE9 MAGE X -1 A_AddPlayerCorpse S_NULL - -S_MPLAY_ICE MAGE Y 5 A_FreezeDeath S_MPLAY_ICE2 -S_MPLAY_ICE2 MAGE Y 1 A_FreezeDeathChunks S_MPLAY_ICE2 - - -// -// The Pig -// - -$ MT_PIGPLAYER -spawnstate S_PIGPLAY -spawnhealth 100 -seestate S_PIGPLAY_RUN1 -reactiontime 0 -painstate S_PIGPLAY_PAIN -painchance 255 -painsound PigPain -missilestate S_PIGPLAY_ATK1 -deathstate S_PIG_DIE1 -deathsound PigDeath -radius 16 -height 24 -flags MF_SOLID|MF_SHOOTABLE|MF_DROPOFF|MF_NOTDMATCH -flags2 MF2_WINDTHRUST|MF2_SLIDE|MF2_PASSMOBJ|MF2_FLOORCLIP|MF2_TELESTOMP|MF2_PUSHWALL - -$ MT_PIG -spawnstate S_PIG_LOOK1 -spawnhealth 25 -seestate S_PIG_WALK1 -seesound PigActive1 -painstate S_PIG_PAIN -painchance 128 -painsound PigPain -meleestate S_PIG_ATK1 -missilestate 0 -deathstate S_PIG_DIE1 -deathsound PigDeath -speed 10 -radius 12 -height 22 -mass 60 -activesound PigActive1 -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_WINDTHRUST|MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_TELESTOMP - -S_PIGPLAY PIGY A -1 NULL S_NULL - -S_PIGPLAY_RUN1 PIGY A 3 NULL S_PIGPLAY_RUN2 -S_PIGPLAY_RUN2 PIGY B 3 NULL S_PIGPLAY_RUN3 -S_PIGPLAY_RUN3 PIGY C 3 NULL S_PIGPLAY_RUN4 -S_PIGPLAY_RUN4 PIGY D 3 NULL S_PIGPLAY_RUN1 - -S_PIGPLAY_ATK1 PIGY A 12 NULL S_PIGPLAY - -S_PIGPLAY_PAIN PIGY D 4 A_PigPain S_PIGPLAY - -S_PIG_LOOK1 PIGY B 10 A_PigLook S_PIG_LOOK1 - -S_PIG_WALK1 PIGY A 3 A_PigChase S_PIG_WALK2 -S_PIG_WALK2 PIGY B 3 A_PigChase S_PIG_WALK3 -S_PIG_WALK3 PIGY C 3 A_PigChase S_PIG_WALK4 -S_PIG_WALK4 PIGY D 3 A_PigChase S_PIG_WALK1 - -S_PIG_PAIN PIGY D 4 A_PigPain S_PIG_WALK1 - -S_PIG_ATK1 PIGY A 5 A_FaceTarget S_PIG_ATK2 -S_PIG_ATK2 PIGY A 10 A_PigAttack S_PIG_WALK1 - -S_PIG_DIE1 PIGY E 4 A_Scream S_PIG_DIE2 -S_PIG_DIE2 PIGY F 3 A_NoBlocking S_PIG_DIE3 -S_PIG_DIE3 PIGY G 4 A_QueueCorpse S_PIG_DIE4 -S_PIG_DIE4 PIGY H 3 NULL S_PIG_DIE5 -S_PIG_DIE5 PIGY I 4 NULL S_PIG_DIE6 -S_PIG_DIE6 PIGY J 4 NULL S_PIG_DIE7 -S_PIG_DIE7 PIGY K 4 NULL S_PIG_DIE8 -S_PIG_DIE8 PIGY L -1 NULL S_NULL - -S_PIG_ICE PIGY M 5 A_FreezeDeath S_PIG_ICE2 -S_PIG_ICE2 PIGY M 1 A_FreezeDeathChunks S_PIG_ICE2 - - -// -// Centaur -// - -$ MT_CENTAUR -doomednum 107 -spawnstate S_CENTAUR_LOOK1 -spawnhealth 200 -seestate S_CENTAUR_WALK1 -seesound CentaurSight -attacksound CentaurAttack -painstate S_CENTAUR_PAIN1 -painchance 135 -painsound CentaurPain -meleestate S_CENTAUR_ATK1 -missilestate 0 -deathstate S_CENTAUR_DEATH1 -xdeathstate S_CENTAUR_DEATH_X1 -deathsound CentaurDeath -speed 13 -height 64 -mass 120 -activesound CentaurActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_MCROSS|MF2_TELESTOMP - -$ MT_CENTAURLEADER -doomednum 115 -spawnstate S_CENTAUR_LOOK1 -spawnhealth 250 -seestate S_CENTAUR_WALK1 -seesound CentaurSight -attacksound CentaurAttack -painstate S_CENTAUR_PAIN1 -painchance 96 -painsound CentaurPain -meleestate S_CENTAUR_ATK1 -missilestate S_CENTAUR_MISSILE1 -deathstate S_CENTAUR_DEATH1 -xdeathstate S_CENTAUR_DEATH_X1 -deathsound CentaurDeath -speed 10 -height 64 -mass 120 -activesound CentaurActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_MCROSS|MF2_TELESTOMP - -$ MT_CENTAUR_FX -spawnstate S_CENTAUR_FX1 -deathstate S_CENTAUR_FX_X1 -deathsound CentaurMissileExplode -speed 20 -damage 4 -flags MF_MISSILE|MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS - -$ MT_CENTAUR_SHIELD -spawnstate S_CENTAUR_SHIELD1 -deathstate S_CENTAUR_SHIELD_X1 -flags MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT - -$ MT_CENTAUR_SWORD -spawnstate S_CENTAUR_SWORD1 -deathstate S_CENTAUR_SWORD_X1 -flags MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT - -S_CENTAUR_LOOK1 CENT A 10 A_Look S_CENTAUR_LOOK2 -S_CENTAUR_LOOK2 CENT B 10 A_Look S_CENTAUR_LOOK1 - -S_CENTAUR_WALK1 CENT A 4 A_Chase S_CENTAUR_WALK2 -S_CENTAUR_WALK2 CENT B 4 A_Chase S_CENTAUR_WALK3 -S_CENTAUR_WALK3 CENT C 4 A_Chase S_CENTAUR_WALK4 -S_CENTAUR_WALK4 CENT D 4 A_Chase S_CENTAUR_WALK1 - -S_CENTAUR_ATK1 CENT H 5 A_FaceTarget S_CENTAUR_ATK2 -S_CENTAUR_ATK2 CENT I 4 A_FaceTarget S_CENTAUR_ATK3 -S_CENTAUR_ATK3 CENT J 7 A_CentaurAttack S_CENTAUR_WALK1 - -S_CENTAUR_MISSILE1 CENT E 10 A_FaceTarget S_CENTAUR_MISSILE2 -S_CENTAUR_MISSILE2 CENT F* 8 A_CentaurAttack2 S_CENTAUR_MISSILE3 -S_CENTAUR_MISSILE3 CENT E 10 A_FaceTarget S_CENTAUR_MISSILE4 -S_CENTAUR_MISSILE4 CENT F* 8 A_CentaurAttack2 S_CENTAUR_WALK1 - -S_CENTAUR_PAIN1 CENT G 6 A_Pain S_CENTAUR_PAIN2 -S_CENTAUR_PAIN2 CENT G 6 A_SetReflective S_CENTAUR_PAIN3 -S_CENTAUR_PAIN3 CENT E 15 A_CentaurDefend S_CENTAUR_PAIN4 -S_CENTAUR_PAIN4 CENT E 15 A_CentaurDefend S_CENTAUR_PAIN5 -S_CENTAUR_PAIN5 CENT E 15 A_CentaurDefend S_CENTAUR_PAIN6 -S_CENTAUR_PAIN6 CENT E 1 A_UnSetReflective S_CENTAUR_WALK1 - -S_CENTAUR_DEATH1 CENT K 4 NULL S_CENTAUR_DEATH2 -S_CENTAUR_DEATH2 CENT L 4 A_Scream S_CENTAUR_DEATH3 -S_CENTAUR_DEATH3 CENT M 4 NULL S_CENTAUR_DEATH4 -S_CENTAUR_DEATH4 CENT N 4 NULL S_CENTAUR_DEATH5 -S_CENTAUR_DEATH5 CENT O 4 A_NoBlocking S_CENTAUR_DEATH6 -S_CENTAUR_DEATH6 CENT P 4 NULL S_CENTAUR_DEATH7 -S_CENTAUR_DEATH7 CENT Q 4 NULL S_CENTAUR_DEATH8 -S_CENTAUR_DEATH8 CENT R 4 A_QueueCorpse S_CENTAUR_DEATH9 -S_CENTAUR_DEATH9 CENT S 4 NULL S_CENTAUR_DEATH0 -S_CENTAUR_DEATH0 CENT T -1 NULL S_NULL - -S_CENTAUR_DEATH_X1 CTXD A 4 NULL S_CENTAUR_DEATH_X2 -S_CENTAUR_DEATH_X2 CTXD B 4 A_NoBlocking S_CENTAUR_DEATH_X3 -S_CENTAUR_DEATH_X3 CTXD C 4 A_CentaurDropStuff S_CENTAUR_DEATH_X4 -S_CENTAUR_DEATH_X4 CTXD D 3 A_Scream S_CENTAUR_DEATH_X5 -S_CENTAUR_DEATH_X5 CTXD E 4 A_QueueCorpse S_CENTAUR_DEATH_X6 -S_CENTAUR_DEATH_X6 CTXD F 3 NULL S_CENTAUR_DEATH_X7 -S_CENTAUR_DEATH_X7 CTXD G 4 NULL S_CENTAUR_DEATH_X8 -S_CENTAUR_DEATH_X8 CTXD H 3 NULL S_CENTAUR_DEATH_X9 -S_CENTAUR_DEATH_X9 CTXD I 4 NULL S_CENTAUR_DEATH_X10 -S_CENTAUR_DEATH_X10 CTXD J 3 NULL S_CENTAUR_DEATH_X11 -S_CENTAUR_DEATH_X11 CTXD K -1 NULL S_NULL - -S_CENTAUR_ICE CENT U 5 A_FreezeDeath S_CENTAUR_ICE2 -S_CENTAUR_ICE2 CENT U 1 A_FreezeDeathChunks S_CENTAUR_ICE2 - -S_CENTAUR_FX1 CTFX A* -1 NULL S_NULL - -S_CENTAUR_FX_X1 CTFX B* 4 NULL S_CENTAUR_FX_X2 -S_CENTAUR_FX_X2 CTFX C* 3 NULL S_CENTAUR_FX_X3 -S_CENTAUR_FX_X3 CTFX D* 4 NULL S_CENTAUR_FX_X4 -S_CENTAUR_FX_X4 CTFX E* 3 NULL S_CENTAUR_FX_X5 -S_CENTAUR_FX_X5 CTFX F* 2 NULL S_NULL - -S_CENTAUR_SHIELD1 CTDP A 3 A_CheckFloor S_CENTAUR_SHIELD2 -S_CENTAUR_SHIELD2 CTDP B 3 A_CheckFloor S_CENTAUR_SHIELD3 -S_CENTAUR_SHIELD3 CTDP C 3 A_CheckFloor S_CENTAUR_SHIELD4 -S_CENTAUR_SHIELD4 CTDP D 3 A_CheckFloor S_CENTAUR_SHIELD5 -S_CENTAUR_SHIELD5 CTDP E 3 A_CheckFloor S_CENTAUR_SHIELD6 -S_CENTAUR_SHIELD6 CTDP F 3 A_CheckFloor S_CENTAUR_SHIELD3 - -S_CENTAUR_SHIELD_X1 CTDP G 4 NULL S_CENTAUR_SHIELD_X2 -S_CENTAUR_SHIELD_X2 CTDP H 4 A_QueueCorpse S_CENTAUR_SHIELD_X3 -S_CENTAUR_SHIELD_X3 CTDP I 4 NULL S_CENTAUR_SHIELD_X4 -S_CENTAUR_SHIELD_X4 CTDP J -1 NULL S_NULL - -S_CENTAUR_SWORD1 CTDP K 3 A_CheckFloor S_CENTAUR_SWORD2 -S_CENTAUR_SWORD2 CTDP L 3 A_CheckFloor S_CENTAUR_SWORD3 -S_CENTAUR_SWORD3 CTDP M 3 A_CheckFloor S_CENTAUR_SWORD4 -S_CENTAUR_SWORD4 CTDP N 3 A_CheckFloor S_CENTAUR_SWORD5 -S_CENTAUR_SWORD5 CTDP O 3 A_CheckFloor S_CENTAUR_SWORD6 -S_CENTAUR_SWORD6 CTDP P 3 A_CheckFloor S_CENTAUR_SWORD7 -S_CENTAUR_SWORD7 CTDP Q 3 A_CheckFloor S_CENTAUR_SWORD3 - -S_CENTAUR_SWORD_X1 CTDP R 4 NULL S_CENTAUR_SWORD_X2 -S_CENTAUR_SWORD_X2 CTDP S 4 A_QueueCorpse S_CENTAUR_SWORD_X3 -S_CENTAUR_SWORD_X3 CTDP T -1 NULL S_NULL - - -// -// Demon -// -$ MT_DEMON -doomednum 31 -spawnstate S_DEMN_LOOK1 -spawnhealth 250 -seestate S_DEMN_CHASE1 -seesound DemonSight -attacksound DemonAttack -painstate S_DEMN_PAIN1 -painchance 50 -painsound DemonPain -meleestate S_DEMN_ATK1_1 -missilestate S_DEMN_ATK2_1 -deathstate S_DEMN_DEATH1 -xdeathstate S_DEMN_XDEATH1 -deathsound DemonDeath -speed 13 -radius 32 -height 64 -mass 220 -activesound DemonActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_MCROSS|MF2_TELESTOMP - -$ MT_DEMONCHUNK1 -spawnstate S_DEMONCHUNK1_1 -deathstate S_DEMONCHUNK1_4 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -$ MT_DEMONCHUNK2 -spawnstate S_DEMONCHUNK2_1 -deathstate S_DEMONCHUNK2_4 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -$ MT_DEMONCHUNK3 -spawnstate S_DEMONCHUNK3_1 -deathstate S_DEMONCHUNK3_4 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -$ MT_DEMONCHUNK4 -spawnstate S_DEMONCHUNK4_1 -deathstate S_DEMONCHUNK4_4 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -$ MT_DEMONCHUNK5 -spawnstate S_DEMONCHUNK5_1 -deathstate S_DEMONCHUNK5_4 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -$ MT_DEMONFX1 -spawnstate S_DEMONFX_MOVE1 -deathstate S_DEMONFX_BOOM1 -deathsound DemonMissileExplode -speed 15 -radius 10 -height 6 -damage 5 -flags MF_MISSILE|MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS|MF2_FIREDAMAGE - -S_DEMN_LOOK1 DEMN A 10 A_Look S_DEMN_LOOK2 -S_DEMN_LOOK2 DEMN A 10 A_Look S_DEMN_LOOK1 - -S_DEMN_CHASE1 DEMN A 4 A_Chase S_DEMN_CHASE2 -S_DEMN_CHASE2 DEMN B 4 A_Chase S_DEMN_CHASE3 -S_DEMN_CHASE3 DEMN C 4 A_Chase S_DEMN_CHASE4 -S_DEMN_CHASE4 DEMN D 4 A_Chase S_DEMN_CHASE1 - -S_DEMN_ATK1_1 DEMN E 6 A_FaceTarget S_DEMN_ATK1_2 -S_DEMN_ATK1_2 DEMN F 8 A_FaceTarget S_DEMN_ATK1_3 -S_DEMN_ATK1_3 DEMN G 6 A_DemonAttack1 S_DEMN_CHASE1 - -S_DEMN_ATK2_1 DEMN E 5 A_FaceTarget S_DEMN_ATK2_2 -S_DEMN_ATK2_2 DEMN F 6 A_FaceTarget S_DEMN_ATK2_3 -S_DEMN_ATK2_3 DEMN G 5 A_DemonAttack2 S_DEMN_CHASE1 - -S_DEMN_PAIN1 DEMN E 4 NULL S_DEMN_PAIN2 -S_DEMN_PAIN2 DEMN E 4 A_Pain S_DEMN_CHASE1 - -S_DEMN_DEATH1 DEMN H 6 NULL S_DEMN_DEATH2 -S_DEMN_DEATH2 DEMN I 6 NULL S_DEMN_DEATH3 -S_DEMN_DEATH3 DEMN J 6 A_Scream S_DEMN_DEATH4 -S_DEMN_DEATH4 DEMN K 6 A_NoBlocking S_DEMN_DEATH5 -S_DEMN_DEATH5 DEMN L 6 A_QueueCorpse S_DEMN_DEATH6 -S_DEMN_DEATH6 DEMN M 6 NULL S_DEMN_DEATH7 -S_DEMN_DEATH7 DEMN N 6 NULL S_DEMN_DEATH8 -S_DEMN_DEATH8 DEMN O 6 NULL S_DEMN_DEATH9 -S_DEMN_DEATH9 DEMN P -1 NULL S_NULL - -S_DEMN_XDEATH1 DEMN H 6 NULL S_DEMN_XDEATH2 -S_DEMN_XDEATH2 DEMN I 6 A_DemonDeath S_DEMN_XDEATH3 -S_DEMN_XDEATH3 DEMN J 6 A_Scream S_DEMN_XDEATH4 -S_DEMN_XDEATH4 DEMN K 6 A_NoBlocking S_DEMN_XDEATH5 -S_DEMN_XDEATH5 DEMN L 6 A_QueueCorpse S_DEMN_XDEATH6 -S_DEMN_XDEATH6 DEMN M 6 NULL S_DEMN_XDEATH7 -S_DEMN_XDEATH7 DEMN N 6 NULL S_DEMN_XDEATH8 -S_DEMN_XDEATH8 DEMN O 6 NULL S_DEMN_XDEATH9 -S_DEMN_XDEATH9 DEMN P -1 NULL S_NULL - -S_DEMON_ICE DEMN Q 5 A_FreezeDeath S_DEMON_ICE2 -S_DEMON_ICE2 DEMN Q 1 A_FreezeDeathChunks S_DEMON_ICE2 - -S_DEMONCHUNK1_1 DEMA A 4 NULL S_DEMONCHUNK1_2 -S_DEMONCHUNK1_2 DEMA A 10 A_QueueCorpse S_DEMONCHUNK1_3 -S_DEMONCHUNK1_3 DEMA A 20 NULL S_DEMONCHUNK1_3 -S_DEMONCHUNK1_4 DEMA A -1 NULL S_NULL - -S_DEMONCHUNK2_1 DEMB A 4 NULL S_DEMONCHUNK2_2 -S_DEMONCHUNK2_2 DEMB A 10 A_QueueCorpse S_DEMONCHUNK2_3 -S_DEMONCHUNK2_3 DEMB A 20 NULL S_DEMONCHUNK2_3 -S_DEMONCHUNK2_4 DEMB A -1 NULL S_NULL - -S_DEMONCHUNK3_1 DEMC A 4 NULL S_DEMONCHUNK3_2 -S_DEMONCHUNK3_2 DEMC A 10 A_QueueCorpse S_DEMONCHUNK3_3 -S_DEMONCHUNK3_3 DEMC A 20 NULL S_DEMONCHUNK3_3 -S_DEMONCHUNK3_4 DEMC A -1 NULL S_NULL - -S_DEMONCHUNK4_1 DEMD A 4 NULL S_DEMONCHUNK4_2 -S_DEMONCHUNK4_2 DEMD A 10 A_QueueCorpse S_DEMONCHUNK4_3 -S_DEMONCHUNK4_3 DEMD A 20 NULL S_DEMONCHUNK4_3 -S_DEMONCHUNK4_4 DEMD A -1 NULL S_NULL - -S_DEMONCHUNK5_1 DEME A 4 NULL S_DEMONCHUNK5_2 -S_DEMONCHUNK5_2 DEME A 10 A_QueueCorpse S_DEMONCHUNK5_3 -S_DEMONCHUNK5_3 DEME A 20 NULL S_DEMONCHUNK5_3 -S_DEMONCHUNK5_4 DEME A -1 NULL S_NULL - -S_DEMONFX_MOVE1 DMFX A* 4 NULL S_DEMONFX_MOVE2 -S_DEMONFX_MOVE2 DMFX B* 4 NULL S_DEMONFX_MOVE3 -S_DEMONFX_MOVE3 DMFX C* 4 NULL S_DEMONFX_MOVE1 - -S_DEMONFX_BOOM1 DMFX D* 4 NULL S_DEMONFX_BOOM2 -S_DEMONFX_BOOM2 DMFX E* 4 NULL S_DEMONFX_BOOM3 -S_DEMONFX_BOOM3 DMFX F* 3 NULL S_DEMONFX_BOOM4 -S_DEMONFX_BOOM4 DMFX G* 3 NULL S_DEMONFX_BOOM5 -S_DEMONFX_BOOM5 DMFX H* 3 NULL S_NULL - - -// -// Another demon -// - -$ MT_DEMON2 -doomednum 8080 -spawnstate S_DEMN2_LOOK1 -spawnhealth 250 -seestate S_DEMN2_CHASE1 -seesound DemonSight -attacksound DemonAttack -painstate S_DEMN2_PAIN1 -painchance 50 -painsound DemonPain -meleestate S_DEMN2_ATK1_1 -missilestate S_DEMN2_ATK2_1 -deathstate S_DEMN2_DEATH1 -xdeathstate S_DEMN2_XDEATH1 -deathsound DemonDeath -speed 13 -radius 32 -height 64 -mass 220 -activesound DemonActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_MCROSS|MF2_TELESTOMP - -$ MT_DEMON2CHUNK1 -spawnstate S_DEMON2CHUNK1_1 -deathstate S_DEMON2CHUNK1_4 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -$ MT_DEMON2CHUNK2 -spawnstate S_DEMON2CHUNK2_1 -deathstate S_DEMON2CHUNK2_4 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -$ MT_DEMON2CHUNK3 -spawnstate S_DEMON2CHUNK3_1 -deathstate S_DEMON2CHUNK3_4 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -$ MT_DEMON2CHUNK4 -spawnstate S_DEMON2CHUNK4_1 -deathstate S_DEMON2CHUNK4_4 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -$ MT_DEMON2CHUNK5 -spawnstate S_DEMON2CHUNK5_1 -deathstate S_DEMON2CHUNK5_4 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -$ MT_DEMON2FX1 -spawnstate S_DEMON2FX_MOVE1 -deathstate S_DEMON2FX_BOOM1 -deathsound DemonMissileExplode -speed 15 -radius 10 -height 6 -damage 5 -flags MF_MISSILE|MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS|MF2_FIREDAMAGE - -S_DEMN2_LOOK1 DEM2 A 10 A_Look S_DEMN2_LOOK2 -S_DEMN2_LOOK2 DEM2 A 10 A_Look S_DEMN2_LOOK1 - -S_DEMN2_CHASE1 DEM2 A 4 A_Chase S_DEMN2_CHASE2 -S_DEMN2_CHASE2 DEM2 B 4 A_Chase S_DEMN2_CHASE3 -S_DEMN2_CHASE3 DEM2 C 4 A_Chase S_DEMN2_CHASE4 -S_DEMN2_CHASE4 DEM2 D 4 A_Chase S_DEMN2_CHASE1 - -S_DEMN2_ATK1_1 DEM2 E 6 A_FaceTarget S_DEMN2_ATK1_2 -S_DEMN2_ATK1_2 DEM2 F 8 A_FaceTarget S_DEMN2_ATK1_3 -S_DEMN2_ATK1_3 DEM2 G 6 A_DemonAttack1 S_DEMN2_CHASE1 - -S_DEMN2_ATK2_1 DEM2 E 5 A_FaceTarget S_DEMN2_ATK2_2 -S_DEMN2_ATK2_2 DEM2 F 6 A_FaceTarget S_DEMN2_ATK2_3 -S_DEMN2_ATK2_3 DEM2 G 5 A_DemonAttack2 S_DEMN2_CHASE1 - -S_DEMN2_PAIN1 DEM2 E 4 NULL S_DEMN2_PAIN2 -S_DEMN2_PAIN2 DEM2 E 4 A_Pain S_DEMN2_CHASE1 - -S_DEMN2_DEATH1 DEM2 H 6 NULL S_DEMN2_DEATH2 -S_DEMN2_DEATH2 DEM2 I 6 NULL S_DEMN2_DEATH3 -S_DEMN2_DEATH3 DEM2 J 6 A_Scream S_DEMN2_DEATH4 -S_DEMN2_DEATH4 DEM2 K 6 A_NoBlocking S_DEMN2_DEATH5 -S_DEMN2_DEATH5 DEM2 L 6 A_QueueCorpse S_DEMN2_DEATH6 -S_DEMN2_DEATH6 DEM2 M 6 NULL S_DEMN2_DEATH7 -S_DEMN2_DEATH7 DEM2 N 6 NULL S_DEMN2_DEATH8 -S_DEMN2_DEATH8 DEM2 O 6 NULL S_DEMN2_DEATH9 -S_DEMN2_DEATH9 DEM2 P -1 NULL S_NULL - -S_DEMN2_XDEATH1 DEM2 H 6 NULL S_DEMN2_XDEATH2 -S_DEMN2_XDEATH2 DEM2 I 6 A_Demon2Death S_DEMN2_XDEATH3 -S_DEMN2_XDEATH3 DEM2 J 6 A_Scream S_DEMN2_XDEATH4 -S_DEMN2_XDEATH4 DEM2 K 6 A_NoBlocking S_DEMN2_XDEATH5 -S_DEMN2_XDEATH5 DEM2 L 6 A_QueueCorpse S_DEMN2_XDEATH6 -S_DEMN2_XDEATH6 DEM2 M 6 NULL S_DEMN2_XDEATH7 -S_DEMN2_XDEATH7 DEM2 N 6 NULL S_DEMN2_XDEATH8 -S_DEMN2_XDEATH8 DEM2 O 6 NULL S_DEMN2_XDEATH9 -S_DEMN2_XDEATH9 DEM2 P -1 NULL S_NULL - -S_DEMON2CHUNK1_1 DMBA A 4 NULL S_DEMON2CHUNK1_2 -S_DEMON2CHUNK1_2 DMBA A 10 A_QueueCorpse S_DEMON2CHUNK1_3 -S_DEMON2CHUNK1_3 DMBA A 20 NULL S_DEMON2CHUNK1_3 -S_DEMON2CHUNK1_4 DMBA A -1 NULL S_NULL - -S_DEMON2CHUNK2_1 DMBB A 4 NULL S_DEMON2CHUNK2_2 -S_DEMON2CHUNK2_2 DMBB A 10 A_QueueCorpse S_DEMON2CHUNK2_3 -S_DEMON2CHUNK2_3 DMBB A 20 NULL S_DEMON2CHUNK2_3 -S_DEMON2CHUNK2_4 DMBB A -1 NULL S_NULL - -S_DEMON2CHUNK3_1 DMBC A 4 NULL S_DEMON2CHUNK3_2 -S_DEMON2CHUNK3_2 DMBC A 10 A_QueueCorpse S_DEMON2CHUNK3_3 -S_DEMON2CHUNK3_3 DMBC A 20 NULL S_DEMON2CHUNK3_3 -S_DEMON2CHUNK3_4 DMBC A -1 NULL S_NULL - -S_DEMON2CHUNK4_1 DMBD A 4 NULL S_DEMON2CHUNK4_2 -S_DEMON2CHUNK4_2 DMBD A 10 A_QueueCorpse S_DEMON2CHUNK4_3 -S_DEMON2CHUNK4_3 DMBD A 20 NULL S_DEMON2CHUNK4_3 -S_DEMON2CHUNK4_4 DMBD A -1 NULL S_NULL - -S_DEMON2CHUNK5_1 DMBE A 4 NULL S_DEMON2CHUNK5_2 -S_DEMON2CHUNK5_2 DMBE A 10 NULL S_DEMON2CHUNK5_3 -S_DEMON2CHUNK5_3 DMBE A 20 NULL S_DEMON2CHUNK5_3 -S_DEMON2CHUNK5_4 DMBE A -1 NULL S_NULL - -S_DEMON2FX_MOVE1 D2FX A* 4 NULL S_DEMON2FX_MOVE2 -S_DEMON2FX_MOVE2 D2FX B* 4 NULL S_DEMON2FX_MOVE3 -S_DEMON2FX_MOVE3 D2FX C* 4 NULL S_DEMON2FX_MOVE4 -S_DEMON2FX_MOVE4 D2FX D* 4 NULL S_DEMON2FX_MOVE5 -S_DEMON2FX_MOVE5 D2FX E* 4 NULL S_DEMON2FX_MOVE6 -S_DEMON2FX_MOVE6 D2FX F* 4 NULL S_DEMON2FX_MOVE1 - -S_DEMON2FX_BOOM1 D2FX G* 4 NULL S_DEMON2FX_BOOM2 -S_DEMON2FX_BOOM2 D2FX H* 4 NULL S_DEMON2FX_BOOM3 -S_DEMON2FX_BOOM3 D2FX I* 4 NULL S_DEMON2FX_BOOM4 -S_DEMON2FX_BOOM4 D2FX J* 4 NULL S_DEMON2FX_BOOM5 -S_DEMON2FX_BOOM5 D2FX K* 3 NULL S_DEMON2FX_BOOM6 -S_DEMON2FX_BOOM6 D2FX L* 3 NULL S_NULL - - -// -// Wraith -// - -$ MT_WRAITHB -doomednum 10011 -spawnstate S_WRAITH_LOOK1 -spawnhealth 150 -seestate S_WRAITH_RAISE1 -seesound WraithSight -attacksound WraithAttack -painstate S_WRAITH_PAIN1 -painchance 25 -painsound WraithPain -meleestate S_WRAITH_ATK1_1 -missilestate S_WRAITH_ATK2_1 -deathstate S_WRAITH_DEATH1_1 -xdeathstate S_WRAITH_DEATH2_1 -deathsound WraithDeath -speed 11 -height 68 -damage 10 -mass 75 -activesound WraithActive -flags MF_DROPOFF|MF_NOGRAVITY|MF_FLOAT|MF_COUNTKILL -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_TELESTOMP|MF2_DONTDRAW - -$ MT_WRAITH -doomednum 34 -spawnstate S_WRAITH_INIT1 -spawnhealth 150 -seestate S_WRAITH_CHASE1 -seesound WraithSight -attacksound WraithAttack -painstate S_WRAITH_PAIN1 -painchance 25 -painsound WraithPain -meleestate S_WRAITH_ATK1_1 -missilestate S_WRAITH_ATK2_1 -deathstate S_WRAITH_DEATH1_1 -xdeathstate S_WRAITH_DEATH2_1 -deathsound WraithDeath -speed 11 -height 55 -damage 10 -mass 75 -activesound WraithActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_DROPOFF|MF_NOGRAVITY|MF_FLOAT -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_TELESTOMP - -$ MT_WRAITHFX1 -spawnstate S_WRTHFX_MOVE1 -deathstate S_WRTHFX_BOOM1 -deathsound WraithMissileExplode -speed 14 -radius 10 -height 6 -damage 5 -mass 5 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS|MF2_FLOORCLIP|MF2_FIREDAMAGE - -$ MT_WRAITHFX2 -spawnstate S_WRTHFX_SIZZLE1 -radius 2 -height 5 -mass 5 -flags MF_NOBLOCKMAP|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -$ MT_WRAITHFX3 -spawnstate S_WRTHFX_DROP1 -deathstate S_WRTHFX_DEAD1 -deathsound Drip -radius 2 -height 5 -mass 5 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -$ MT_WRAITHFX4 -spawnstate S_WRTHFX_ADROP1 -deathstate S_WRTHFX_ADEAD1 -deathsound Drip -radius 2 -height 5 -mass 5 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT - -$ MT_WRAITHFX5 -spawnstate S_WRTHFX_BDROP1 -deathstate S_WRTHFX_BDEAD1 -deathsound Drip -radius 2 -height 5 -mass 5 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT - -S_WRAITH_RAISE1 WRTH A 2 A_WraithRaiseInit S_WRAITH_RAISE2 -S_WRAITH_RAISE2 WRTH A 2 A_WraithRaise S_WRAITH_RAISE3 -S_WRAITH_RAISE3 WRTH A 2 A_FaceTarget S_WRAITH_RAISE4 -S_WRAITH_RAISE4 WRTH B 2 A_WraithRaise S_WRAITH_RAISE5 -S_WRAITH_RAISE5 WRTH B 2 A_WraithRaise S_WRAITH_RAISE2 - -S_WRAITH_INIT1 WRTH A 10 NULL S_WRAITH_INIT2 -S_WRAITH_INIT2 WRTH B 5 A_WraithInit S_WRAITH_LOOK1 -S_WRAITH_LOOK1 WRTH A 15 A_WraithLook S_WRAITH_LOOK2 -S_WRAITH_LOOK2 WRTH B 15 A_WraithLook S_WRAITH_LOOK1 - -S_WRAITH_CHASE1 WRTH A 4 A_WraithChase S_WRAITH_CHASE2 -S_WRAITH_CHASE2 WRTH B 4 A_WraithChase S_WRAITH_CHASE3 -S_WRAITH_CHASE3 WRTH C 4 A_WraithChase S_WRAITH_CHASE4 -S_WRAITH_CHASE4 WRTH D 4 A_WraithChase S_WRAITH_CHASE1 - -S_WRAITH_ATK1_1 WRTH E 6 A_FaceTarget S_WRAITH_ATK1_2 -S_WRAITH_ATK1_2 WRTH F 6 A_WraithFX3 S_WRAITH_ATK1_3 -S_WRAITH_ATK1_3 WRTH G 6 A_WraithMelee S_WRAITH_CHASE1 - -S_WRAITH_ATK2_1 WRTH E 6 A_FaceTarget S_WRAITH_ATK2_2 -S_WRAITH_ATK2_2 WRTH F 6 NULL S_WRAITH_ATK2_3 -S_WRAITH_ATK2_3 WRTH G 6 A_WraithMissile S_WRAITH_CHASE1 - -S_WRAITH_PAIN1 WRTH A 2 NULL S_WRAITH_PAIN2 -S_WRAITH_PAIN2 WRTH H 6 A_Pain S_WRAITH_CHASE1 - -S_WRAITH_DEATH1_1 WRTH I 4 NULL S_WRAITH_DEATH1_2 -S_WRAITH_DEATH1_2 WRTH J 4 A_Scream S_WRAITH_DEATH1_3 -S_WRAITH_DEATH1_3 WRTH K 4 NULL S_WRAITH_DEATH1_4 -S_WRAITH_DEATH1_4 WRTH L 4 NULL S_WRAITH_DEATH1_5 -S_WRAITH_DEATH1_5 WRTH M 4 A_NoBlocking S_WRAITH_DEATH1_6 -S_WRAITH_DEATH1_6 WRTH N 4 A_QueueCorpse S_WRAITH_DEATH1_7 -S_WRAITH_DEATH1_7 WRTH O 4 NULL S_WRAITH_DEATH1_8 -S_WRAITH_DEATH1_8 WRTH P 5 NULL S_WRAITH_DEATH1_9 -S_WRAITH_DEATH1_9 WRTH Q 5 NULL S_WRAITH_DEATH1_0 -S_WRAITH_DEATH1_0 WRTH R -1 NULL S_NULL - -S_WRAITH_DEATH2_1 WRT2 A 5 NULL S_WRAITH_DEATH2_2 -S_WRAITH_DEATH2_2 WRT2 B 5 A_Scream S_WRAITH_DEATH2_3 -S_WRAITH_DEATH2_3 WRT2 C 5 NULL S_WRAITH_DEATH2_4 -S_WRAITH_DEATH2_4 WRT2 D 5 NULL S_WRAITH_DEATH2_5 -S_WRAITH_DEATH2_5 WRT2 E 5 A_NoBlocking S_WRAITH_DEATH2_6 -S_WRAITH_DEATH2_6 WRT2 F 5 A_QueueCorpse S_WRAITH_DEATH2_7 -S_WRAITH_DEATH2_7 WRT2 G 5 NULL S_WRAITH_DEATH2_8 -S_WRAITH_DEATH2_8 WRT2 H -1 NULL S_NULL - -S_WRAITH_ICE WRT2 I 5 A_FreezeDeath S_WRAITH_ICE2 -S_WRAITH_ICE2 WRT2 I 1 A_FreezeDeathChunks S_WRAITH_ICE2 - -S_WRTHFX_MOVE1 WRBL A* 3 NULL S_WRTHFX_MOVE2 -S_WRTHFX_MOVE2 WRBL B* 3 A_WraithFX2 S_WRTHFX_MOVE3 -S_WRTHFX_MOVE3 WRBL C* 3 NULL S_WRTHFX_MOVE1 -S_WRTHFX_BOOM1 WRBL D* 4 NULL S_WRTHFX_BOOM2 -S_WRTHFX_BOOM2 WRBL E* 4 A_WraithFX2 S_WRTHFX_BOOM3 -S_WRTHFX_BOOM3 WRBL F* 4 NULL S_WRTHFX_BOOM4 -S_WRTHFX_BOOM4 WRBL G* 3 A_WraithFX2 S_WRTHFX_BOOM5 -S_WRTHFX_BOOM5 WRBL H* 3 A_WraithFX2 S_WRTHFX_BOOM6 -S_WRTHFX_BOOM6 WRBL I* 3 NULL S_NULL - -S_WRTHFX_SIZZLE1 WRBL J* 4 NULL S_WRTHFX_SIZZLE2 -S_WRTHFX_SIZZLE2 WRBL K* 4 NULL S_WRTHFX_SIZZLE3 -S_WRTHFX_SIZZLE3 WRBL L* 4 NULL S_WRTHFX_SIZZLE4 -S_WRTHFX_SIZZLE4 WRBL M* 4 NULL S_WRTHFX_SIZZLE5 -S_WRTHFX_SIZZLE5 WRBL N* 4 NULL S_WRTHFX_SIZZLE6 -S_WRTHFX_SIZZLE6 WRBL O* 4 NULL S_WRTHFX_SIZZLE7 -S_WRTHFX_SIZZLE7 WRBL P* 4 NULL S_NULL - -S_WRTHFX_DROP1 WRBL Q* 4 NULL S_WRTHFX_DROP2 -S_WRTHFX_DROP2 WRBL R* 4 NULL S_WRTHFX_DROP3 -S_WRTHFX_DROP3 WRBL S* 4 NULL S_WRTHFX_DROP1 -S_WRTHFX_DEAD1 WRBL S* 4 NULL S_NULL - -S_WRTHFX_ADROP1 WRBL T 4 NULL S_WRTHFX_ADROP2 -S_WRTHFX_ADROP2 WRBL U 4 NULL S_WRTHFX_ADROP3 -S_WRTHFX_ADROP3 WRBL V 4 NULL S_WRTHFX_ADROP4 -S_WRTHFX_ADROP4 WRBL W 4 NULL S_WRTHFX_ADROP1 - -S_WRTHFX_ADEAD1 WRBL W 10 NULL S_NULL - -S_WRTHFX_BDROP1 WRBL X 7 NULL S_WRTHFX_BDROP2 -S_WRTHFX_BDROP2 WRBL Y 7 NULL S_WRTHFX_BDROP3 -S_WRTHFX_BDROP3 WRBL Z 7 NULL S_WRTHFX_BDROP1 -S_WRTHFX_BDEAD1 WRBL Z 35 NULL S_NULL - - -// -// Minotaur / Maulator -// - -$ MT_MINOTAUR -doomednum 9 -spawnstate S_MNTR_SPAWN1 -spawnhealth 2500 -seestate S_MNTR_WALK1 -seesound MaulatorSight -attacksound MaulatorHamSwing -painstate S_MNTR_PAIN1 -painchance 25 -painsound MaulatorPain -meleestate S_MNTR_ATK1_1 -missilestate S_MNTR_ATK2_1 -deathstate S_MNTR_DIE1 -deathsound MaulatorDeath -speed 16 -radius 28 -height 100 -damage 7 -mass 800 -activesound MaulatorActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_TELESTOMP -translucency 0.33 - -$ MT_MNTRFX1 -spawnstate S_MNTRFX1_1 -deathstate S_MNTRFXI1_1 -speed 20 -radius 10 -height 6 -damage 3 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FIREDAMAGE - -$ MT_MNTRFX2 -spawnstate S_MNTRFX2_1 -deathstate S_MNTRFXI2_1 -speed 14 -radius 5 -height 12 -damage 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FIREDAMAGE - -$ MT_MNTRFX3 -spawnstate S_MNTRFX3_1 -deathstate S_MNTRFXI2_1 -radius 8 -damage 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FIREDAMAGE - -$ MT_MNTRSMOKE -spawnstate S_MINOSMOKE1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -flags2 MF2_NOTELEPORT -translucency 0.33 - -$ MT_MNTRSMOKEEXIT -spawnstate S_MINOSMOKEX1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -flags2 MF2_NOTELEPORT -translucency 0.33 - -S_MNTR_SPAWN1 MNTR A 15 NULL S_MNTR_SPAWN2 -S_MNTR_SPAWN2 MNTR A 15 A_MinotaurFade1 S_MNTR_SPAWN3 -S_MNTR_SPAWN3 MNTR A 3 A_MinotaurFade2 S_MNTR_LOOK1 - -S_MNTR_LOOK1 MNTR A 10 A_MinotaurLook S_MNTR_LOOK2 -S_MNTR_LOOK2 MNTR B 10 A_MinotaurLook S_MNTR_LOOK1 - -S_MNTR_WALK1 MNTR A 5 A_MinotaurChase S_MNTR_WALK2 -S_MNTR_WALK2 MNTR B 5 A_MinotaurChase S_MNTR_WALK3 -S_MNTR_WALK3 MNTR C 5 A_MinotaurChase S_MNTR_WALK4 -S_MNTR_WALK4 MNTR D 5 A_MinotaurChase S_MNTR_WALK1 - -S_MNTR_ROAM1 MNTR A 5 A_MinotaurRoam S_MNTR_ROAM2 -S_MNTR_ROAM2 MNTR B 5 A_MinotaurRoam S_MNTR_ROAM3 -S_MNTR_ROAM3 MNTR C 5 A_MinotaurRoam S_MNTR_ROAM4 -S_MNTR_ROAM4 MNTR D 5 A_MinotaurRoam S_MNTR_ROAM1 - -S_MNTR_ATK1_1 MNTR G 10 A_FaceTarget S_MNTR_ATK1_2 -S_MNTR_ATK1_2 MNTR H 7 A_FaceTarget S_MNTR_ATK1_3 -S_MNTR_ATK1_3 MNTR I 12 A_MinotaurAtk1 S_MNTR_WALK1 - -S_MNTR_ATK2_1 MNTR G 10 A_MinotaurDecide S_MNTR_ATK2_2 -S_MNTR_ATK2_2 MNTR J 4 A_FaceTarget S_MNTR_ATK2_3 -S_MNTR_ATK2_3 MNTR K 9 A_MinotaurAtk2 S_MNTR_WALK1 - -S_MNTR_ATK3_1 MNTR G 10 A_FaceTarget S_MNTR_ATK3_2 -S_MNTR_ATK3_2 MNTR H 7 A_FaceTarget S_MNTR_ATK3_3 -S_MNTR_ATK3_3 MNTR I 12 A_MinotaurAtk3 S_MNTR_WALK1 -S_MNTR_ATK3_4 MNTR I 12 NULL S_MNTR_ATK3_1 - -S_MNTR_ATK4_1 MNTR F 2 A_MinotaurCharge S_MNTR_ATK4_1 - -S_MNTR_PAIN1 MNTR E 3 NULL S_MNTR_PAIN2 -S_MNTR_PAIN2 MNTR E 6 A_Pain S_MNTR_WALK1 - -S_MNTR_DIE1 MNTR E 6 NULL S_MNTR_DIE2 -S_MNTR_DIE2 MNTR E 2 A_Scream S_MNTR_DIE3 -S_MNTR_DIE3 MNTR E 5 A_SmokePuffExit S_MNTR_DIE4 -S_MNTR_DIE4 MNTR E 5 NULL S_MNTR_DIE5 -S_MNTR_DIE5 MNTR E 5 A_NoBlocking S_MNTR_DIE6 -S_MNTR_DIE6 MNTR E 5 NULL S_MNTR_DIE7 -S_MNTR_DIE7 MNTR E 5 A_MinotaurFade1 S_MNTR_DIE8 -S_MNTR_DIE8 MNTR E 5 A_MinotaurFade0 S_MNTR_DIE9 -S_MNTR_DIE9 MNTR E 10 NULL S_NULL - -S_MNTRFX1_1 FX12 A* 6 NULL S_MNTRFX1_2 -S_MNTRFX1_2 FX12 B* 6 NULL S_MNTRFX1_1 - -S_MNTRFXI1_1 FX12 C* 5 NULL S_MNTRFXI1_2 -S_MNTRFXI1_2 FX12 D* 5 NULL S_MNTRFXI1_3 -S_MNTRFXI1_3 FX12 E* 5 NULL S_MNTRFXI1_4 -S_MNTRFXI1_4 FX12 F* 5 NULL S_MNTRFXI1_5 -S_MNTRFXI1_5 FX12 G* 5 NULL S_MNTRFXI1_6 -S_MNTRFXI1_6 FX12 H* 5 NULL S_NULL - -S_MNTRFX2_1 FX13 A 2 A_MntrFloorFire S_MNTRFX2_1 - -S_MNTRFXI2_1 FX13 I* 4 A_Explode S_MNTRFXI2_2 -S_MNTRFXI2_2 FX13 J* 4 NULL S_MNTRFXI2_3 -S_MNTRFXI2_3 FX13 K* 4 NULL S_MNTRFXI2_4 -S_MNTRFXI2_4 FX13 L* 4 NULL S_MNTRFXI2_5 -S_MNTRFXI2_5 FX13 M* 4 NULL S_NULL - -S_MNTRFX3_1 FX13 D* 4 NULL S_MNTRFX3_2 -S_MNTRFX3_2 FX13 C* 4 NULL S_MNTRFX3_3 -S_MNTRFX3_3 FX13 B* 5 NULL S_MNTRFX3_4 -S_MNTRFX3_4 FX13 C* 5 NULL S_MNTRFX3_5 -S_MNTRFX3_5 FX13 D* 5 NULL S_MNTRFX3_6 -S_MNTRFX3_6 FX13 E* 5 NULL S_MNTRFX3_7 -S_MNTRFX3_7 FX13 F* 4 NULL S_MNTRFX3_8 -S_MNTRFX3_8 FX13 G* 4 NULL S_MNTRFX3_9 -S_MNTRFX3_9 FX13 H* 4 NULL S_NULL - -S_MINOSMOKE1 MNSM A 3 NULL S_MINOSMOKE2 -S_MINOSMOKE2 MNSM B 3 NULL S_MINOSMOKE3 -S_MINOSMOKE3 MNSM C 3 NULL S_MINOSMOKE4 -S_MINOSMOKE4 MNSM D 3 NULL S_MINOSMOKE5 -S_MINOSMOKE5 MNSM E 3 NULL S_MINOSMOKE6 -S_MINOSMOKE6 MNSM F 3 NULL S_MINOSMOKE7 -S_MINOSMOKE7 MNSM G 3 NULL S_MINOSMOKE8 -S_MINOSMOKE8 MNSM H 3 NULL S_MINOSMOKE9 -S_MINOSMOKE9 MNSM I 3 NULL S_MINOSMOKE0 -S_MINOSMOKE0 MNSM J 3 NULL S_MINOSMOKEA -S_MINOSMOKEA MNSM K 3 NULL S_MINOSMOKEB -S_MINOSMOKEB MNSM L 3 NULL S_MINOSMOKEC -S_MINOSMOKEC MNSM M 3 NULL S_MINOSMOKED -S_MINOSMOKED MNSM N 3 NULL S_MINOSMOKEE -S_MINOSMOKEE MNSM O 3 NULL S_MINOSMOKEF -S_MINOSMOKEF MNSM P 3 NULL S_MINOSMOKEG -S_MINOSMOKEG MNSM Q 3 NULL S_NULL - -S_MINOSMOKEX1 MNSM A 3 NULL S_MINOSMOKEX2 -S_MINOSMOKEX2 MNSM B 3 NULL S_MINOSMOKEX3 -S_MINOSMOKEX3 MNSM C 3 NULL S_MINOSMOKEX4 -S_MINOSMOKEX4 MNSM D 3 NULL S_MINOSMOKEX5 -S_MINOSMOKEX5 MNSM E 3 NULL S_MINOSMOKEX6 -S_MINOSMOKEX6 MNSM F 3 NULL S_MINOSMOKEX7 -S_MINOSMOKEX7 MNSM G 3 NULL S_MINOSMOKEX8 -S_MINOSMOKEX8 MNSM H 3 NULL S_MINOSMOKEX9 -S_MINOSMOKEX9 MNSM I 3 NULL S_MINOSMOKEX0 -S_MINOSMOKEX0 MNSM J 3 NULL S_MINOSMOKEXA -S_MINOSMOKEXA MNSM I 3 NULL S_MINOSMOKEXB -S_MINOSMOKEXB MNSM H 3 NULL S_MINOSMOKEXC -S_MINOSMOKEXC MNSM G 3 NULL S_MINOSMOKEXD -S_MINOSMOKEXD MNSM F 3 NULL S_MINOSMOKEXE -S_MINOSMOKEXE MNSM E 3 NULL S_MINOSMOKEXF -S_MINOSMOKEXF MNSM D 3 NULL S_MINOSMOKEXG -S_MINOSMOKEXG MNSM C 3 NULL S_MINOSMOKEXH -S_MINOSMOKEXH MNSM B 3 NULL S_MINOSMOKEXI -S_MINOSMOKEXI MNSM A 3 NULL S_NULL - - -// -// Sepent -// - -$ MT_SERPENT -doomednum 121 -spawnstate S_SERPENT_LOOK1 -spawnhealth 90 -seestate S_SERPENT_SWIM1 -seesound SerpentSight -attacksound SerpentAttack -painstate S_SERPENT_PAIN1 -painchance 96 -painsound SerpentPain -meleestate S_SERPENT_SURFACE1 -deathstate S_SERPENT_DIE1 -xdeathstate S_SERPENT_XDIE1 -deathsound SerpentDeath -speed 12 -radius 32 -height 70 -mass 0x7fffffff -flags MF_SOLID|MF_COUNTKILL|MF_NOBLOOD -flags2 MF2_PASSMOBJ|MF2_DONTDRAW|MF2_CANTLEAVEFLOORPIC|MF2_NONSHOOTABLE|MF2_MCROSS - -$ MT_SERPENTLEADER -doomednum 120 -spawnstate S_SERPENT_LOOK1 -spawnhealth 90 -seestate S_SERPENT_SWIM1 -seesound SerpentSight -attacksound SerpentAttack -painstate S_SERPENT_PAIN1 -painchance 96 -painsound SerpentPain -meleestate S_SERPENT_SURFACE1 -deathstate S_SERPENT_DIE1 -xdeathstate S_SERPENT_XDIE1 -deathsound SerpentDeath -speed 12 -radius 32 -height 70 -mass 200 -flags MF_SOLID|MF_COUNTKILL|MF_NOBLOOD -flags2 MF2_PASSMOBJ|MF2_DONTDRAW|MF2_CANTLEAVEFLOORPIC|MF2_NONSHOOTABLE|MF2_MCROSS - -$ MT_SERPENTFX -spawnstate S_SERPENT_FX1 -deathstate S_SERPENT_FX_X1 -deathsound SerpentFXHit -speed 15 -radius 8 -height 10 -damage 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_SERPENT_HEAD -spawnstate S_SERPENT_HEAD1 -radius 5 -height 10 -flags MF_NOBLOCKMAP -flags2 MF2_LOGRAV - -$ MT_SERPENT_GIB1 -spawnstate S_SERPENT_GIB1_1 -radius 3 -height 3 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -$ MT_SERPENT_GIB2 -spawnstate S_SERPENT_GIB2_1 -radius 3 -height 3 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -$ MT_SERPENT_GIB3 -spawnstate S_SERPENT_GIB3_1 -radius 3 -height 3 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -S_SERPENT_LOOK1 SSPT H 10 A_Look S_SERPENT_LOOK1 - -S_SERPENT_SWIM1 SSPT H 1 A_SerpentChase S_SERPENT_SWIM2 -S_SERPENT_SWIM2 SSPT H 1 A_SerpentChase S_SERPENT_SWIM3 -S_SERPENT_SWIM3 SSPT H 2 A_SerpentHumpDecide S_SERPENT_SWIM1 - -S_SERPENT_HUMP1 SSPT H 3 A_SerpentUnHide S_SERPENT_HUMP2 -S_SERPENT_HUMP2 SSPT E 3 A_SerpentRaiseHump S_SERPENT_HUMP3 -S_SERPENT_HUMP3 SSPT F 3 A_SerpentRaiseHump S_SERPENT_HUMP4 -S_SERPENT_HUMP4 SSPT G 3 A_SerpentRaiseHump S_SERPENT_HUMP5 -S_SERPENT_HUMP5 SSPT E 3 A_SerpentRaiseHump S_SERPENT_HUMP6 -S_SERPENT_HUMP6 SSPT F 3 A_SerpentRaiseHump S_SERPENT_HUMP7 -S_SERPENT_HUMP7 SSPT G 3 NULL S_SERPENT_HUMP8 -S_SERPENT_HUMP8 SSPT E 3 NULL S_SERPENT_HUMP9 -S_SERPENT_HUMP9 SSPT F 3 NULL S_SERPENT_HUMP10 -S_SERPENT_HUMP10 SSPT G 3 A_SerpentLowerHump S_SERPENT_HUMP11 -S_SERPENT_HUMP11 SSPT E 3 A_SerpentLowerHump S_SERPENT_HUMP12 -S_SERPENT_HUMP12 SSPT F 3 A_SerpentLowerHump S_SERPENT_HUMP13 -S_SERPENT_HUMP13 SSPT G 3 A_SerpentLowerHump S_SERPENT_HUMP14 -S_SERPENT_HUMP14 SSPT E 3 A_SerpentLowerHump S_SERPENT_HUMP15 -S_SERPENT_HUMP15 SSPT F 3 A_SerpentHide S_SERPENT_SWIM1 - -S_SERPENT_SURFACE1 SSPT A 1 A_UnHideThing S_SERPENT_SURFACE2 -S_SERPENT_SURFACE2 SSPT A 1 A_SerpentBirthScream S_SERPENT_SURFACE3 -S_SERPENT_SURFACE3 SSPT B 3 A_SetShootable S_SERPENT_SURFACE4 -S_SERPENT_SURFACE4 SSPT C 3 NULL S_SERPENT_SURFACE5 -S_SERPENT_SURFACE5 SSPT D 4 A_SerpentCheckForAttack S_SERPENT_DIVE1 - -S_SERPENT_DIVE1 SSDV A 4 NULL S_SERPENT_DIVE2 -S_SERPENT_DIVE2 SSDV B 4 NULL S_SERPENT_DIVE3 -S_SERPENT_DIVE3 SSDV C 4 NULL S_SERPENT_DIVE4 -S_SERPENT_DIVE4 SSDV D 4 A_UnSetShootable S_SERPENT_DIVE5 -S_SERPENT_DIVE5 SSDV E 3 A_SerpentDiveSound S_SERPENT_DIVE6 -S_SERPENT_DIVE6 SSDV F 3 NULL S_SERPENT_DIVE7 -S_SERPENT_DIVE7 SSDV G 4 NULL S_SERPENT_DIVE8 -S_SERPENT_DIVE8 SSDV H 4 NULL S_SERPENT_DIVE9 -S_SERPENT_DIVE9 SSDV I 3 NULL S_SERPENT_DIVE10 -S_SERPENT_DIVE10 SSDV J 3 A_SerpentHide S_SERPENT_SWIM1 - -S_SERPENT_WALK1 SSPT I 5 A_SerpentWalk S_SERPENT_WALK2 -S_SERPENT_WALK2 SSPT J 5 A_SerpentWalk S_SERPENT_WALK3 -S_SERPENT_WALK3 SSPT I 5 A_SerpentWalk S_SERPENT_WALK4 -S_SERPENT_WALK4 SSPT J 5 A_SerpentCheckForAttack S_SERPENT_DIVE1 - -S_SERPENT_PAIN1 SSPT L 5 NULL S_SERPENT_PAIN2 -S_SERPENT_PAIN2 SSPT L 5 A_Pain S_SERPENT_DIVE1 - -S_SERPENT_ATK1 SSPT K 6 A_FaceTarget S_SERPENT_ATK2 -S_SERPENT_ATK2 SSPT L 5 A_SerpentChooseAttack S_SERPENT_MELEE1 -S_SERPENT_MELEE1 SSPT N 5 A_SerpentMeleeAttack S_SERPENT_DIVE1 - -S_SERPENT_MISSILE1 SSPT N 5 A_SerpentMissileAttack S_SERPENT_DIVE1 - -S_SERPENT_DIE1 SSPT O 4 NULL S_SERPENT_DIE2 -S_SERPENT_DIE2 SSPT P 4 A_Scream S_SERPENT_DIE3 -S_SERPENT_DIE3 SSPT Q 4 A_NoBlocking S_SERPENT_DIE4 -S_SERPENT_DIE4 SSPT R 4 NULL S_SERPENT_DIE5 -S_SERPENT_DIE5 SSPT S 4 NULL S_SERPENT_DIE6 -S_SERPENT_DIE6 SSPT T 4 NULL S_SERPENT_DIE7 -S_SERPENT_DIE7 SSPT U 4 NULL S_SERPENT_DIE8 -S_SERPENT_DIE8 SSPT V 4 NULL S_SERPENT_DIE9 -S_SERPENT_DIE9 SSPT W 4 NULL S_SERPENT_DIE10 -S_SERPENT_DIE10 SSPT X 4 NULL S_SERPENT_DIE11 -S_SERPENT_DIE11 SSPT Y 4 NULL S_SERPENT_DIE12 -S_SERPENT_DIE12 SSPT Z 4 NULL S_NULL - -S_SERPENT_XDIE1 SSXD A 4 NULL S_SERPENT_XDIE2 -S_SERPENT_XDIE2 SSXD B 4 A_SerpentHeadPop S_SERPENT_XDIE3 -S_SERPENT_XDIE3 SSXD C 4 A_NoBlocking S_SERPENT_XDIE4 -S_SERPENT_XDIE4 SSXD D 4 NULL S_SERPENT_XDIE5 -S_SERPENT_XDIE5 SSXD E 4 NULL S_SERPENT_XDIE6 -S_SERPENT_XDIE6 SSXD F 3 NULL S_SERPENT_XDIE7 -S_SERPENT_XDIE7 SSXD G 3 NULL S_SERPENT_XDIE8 -S_SERPENT_XDIE8 SSXD H 3 A_SerpentSpawnGibs S_NULL - -S_SERPENT_ICE SSPT [ 5 A_FreezeDeath S_SERPENT_ICE2 -S_SERPENT_ICE2 SSPT [ 1 A_FreezeDeathChunks S_SERPENT_ICE2 - -S_SERPENT_FX1 SSFX A* 3 A_ContMobjSound S_SERPENT_FX2 -S_SERPENT_FX2 SSFX B* 3 NULL S_SERPENT_FX3 -S_SERPENT_FX3 SSFX A* 3 NULL S_SERPENT_FX4 -S_SERPENT_FX4 SSFX B* 3 NULL S_SERPENT_FX1 - -S_SERPENT_FX_X1 SSFX C* 4 NULL S_SERPENT_FX_X2 -S_SERPENT_FX_X2 SSFX D* 4 NULL S_SERPENT_FX_X3 -S_SERPENT_FX_X3 SSFX E* 4 NULL S_SERPENT_FX_X4 -S_SERPENT_FX_X4 SSFX F* 4 NULL S_SERPENT_FX_X5 -S_SERPENT_FX_X5 SSFX G* 4 NULL S_SERPENT_FX_X6 -S_SERPENT_FX_X6 SSFX H* 4 NULL S_NULL - -S_SERPENT_HEAD1 SSXD I 4 A_SerpentHeadCheck S_SERPENT_HEAD2 -S_SERPENT_HEAD2 SSXD J 4 A_SerpentHeadCheck S_SERPENT_HEAD3 -S_SERPENT_HEAD3 SSXD K 4 A_SerpentHeadCheck S_SERPENT_HEAD4 -S_SERPENT_HEAD4 SSXD L 4 A_SerpentHeadCheck S_SERPENT_HEAD5 -S_SERPENT_HEAD5 SSXD M 4 A_SerpentHeadCheck S_SERPENT_HEAD6 -S_SERPENT_HEAD6 SSXD N 4 A_SerpentHeadCheck S_SERPENT_HEAD7 -S_SERPENT_HEAD7 SSXD O 4 A_SerpentHeadCheck S_SERPENT_HEAD8 -S_SERPENT_HEAD8 SSXD P 4 A_SerpentHeadCheck S_SERPENT_HEAD1 - -S_SERPENT_HEAD_X1 SSXD S -1 NULL S_SERPENT_HEAD_X1 - -S_SERPENT_GIB1_1 SSXD Q 6 NULL S_SERPENT_GIB1_2 -S_SERPENT_GIB1_2 SSXD Q 6 A_FloatGib S_SERPENT_GIB1_3 -S_SERPENT_GIB1_3 SSXD Q 8 A_FloatGib S_SERPENT_GIB1_4 -S_SERPENT_GIB1_4 SSXD Q 8 A_FloatGib S_SERPENT_GIB1_5 -S_SERPENT_GIB1_5 SSXD Q 12 A_FloatGib S_SERPENT_GIB1_6 -S_SERPENT_GIB1_6 SSXD Q 12 A_FloatGib S_SERPENT_GIB1_7 -S_SERPENT_GIB1_7 SSXD Q 232 A_DelayGib S_SERPENT_GIB1_8 -S_SERPENT_GIB1_8 SSXD Q 12 A_SinkGib S_SERPENT_GIB1_9 -S_SERPENT_GIB1_9 SSXD Q 12 A_SinkGib S_SERPENT_GIB1_10 -S_SERPENT_GIB1_10 SSXD Q 8 A_SinkGib S_SERPENT_GIB1_11 -S_SERPENT_GIB1_11 SSXD Q 8 A_SinkGib S_SERPENT_GIB1_12 -S_SERPENT_GIB1_12 SSXD Q 8 A_SinkGib S_NULL - -S_SERPENT_GIB2_1 SSXD R 6 NULL S_SERPENT_GIB2_2 -S_SERPENT_GIB2_2 SSXD R 6 A_FloatGib S_SERPENT_GIB2_3 -S_SERPENT_GIB2_3 SSXD R 8 A_FloatGib S_SERPENT_GIB2_4 -S_SERPENT_GIB2_4 SSXD R 8 A_FloatGib S_SERPENT_GIB2_5 -S_SERPENT_GIB2_5 SSXD R 12 A_FloatGib S_SERPENT_GIB2_6 -S_SERPENT_GIB2_6 SSXD R 12 A_FloatGib S_SERPENT_GIB2_7 -S_SERPENT_GIB2_7 SSXD R 232 A_DelayGib S_SERPENT_GIB2_8 -S_SERPENT_GIB2_8 SSXD R 12 A_SinkGib S_SERPENT_GIB2_9 -S_SERPENT_GIB2_9 SSXD R 12 A_SinkGib S_SERPENT_GIB2_10 -S_SERPENT_GIB2_10 SSXD R 8 A_SinkGib S_SERPENT_GIB2_11 -S_SERPENT_GIB2_11 SSXD R 8 A_SinkGib S_SERPENT_GIB2_12 -S_SERPENT_GIB2_12 SSXD R 8 A_SinkGib S_NULL - -S_SERPENT_GIB3_1 SSXD T 6 NULL S_SERPENT_GIB3_2 -S_SERPENT_GIB3_2 SSXD T 6 A_FloatGib S_SERPENT_GIB3_3 -S_SERPENT_GIB3_3 SSXD T 8 A_FloatGib S_SERPENT_GIB3_4 -S_SERPENT_GIB3_4 SSXD T 8 A_FloatGib S_SERPENT_GIB3_5 -S_SERPENT_GIB3_5 SSXD T 12 A_FloatGib S_SERPENT_GIB3_6 -S_SERPENT_GIB3_6 SSXD T 12 A_FloatGib S_SERPENT_GIB3_7 -S_SERPENT_GIB3_7 SSXD T 232 A_DelayGib S_SERPENT_GIB3_8 -S_SERPENT_GIB3_8 SSXD T 12 A_SinkGib S_SERPENT_GIB3_9 -S_SERPENT_GIB3_9 SSXD T 12 A_SinkGib S_SERPENT_GIB3_10 -S_SERPENT_GIB3_10 SSXD T 8 A_SinkGib S_SERPENT_GIB3_11 -S_SERPENT_GIB3_11 SSXD T 8 A_SinkGib S_SERPENT_GIB3_12 -S_SERPENT_GIB3_12 SSXD T 8 A_SinkGib S_NULL - - -// -// Dark Bishop -// - -$ MT_BISHOP -doomednum 114 -spawnstate S_BISHOP_LOOK1 -spawnhealth 130 -seestate S_BISHOP_WALK1 -seesound BishopSight -attacksound BishopAttack -painstate S_BISHOP_PAIN1 -painchance 110 -painsound BishopPain -meleestate 0 -missilestate S_BISHOP_ATK1 -deathstate S_BISHOP_DEATH1 -deathsound BishopDeath -speed 10 -radius 22 -height 65 -activesound BishopActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_FLOAT|MF_NOGRAVITY|MF_NOBLOOD -flags2 MF2_PASSMOBJ|MF2_PUSHWALL|MF2_TELESTOMP - -$ MT_BISHOP_PUFF -spawnstate S_BISHOP_PUFF1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.33 - -$ MT_BISHOPBLUR -spawnstate S_BISHOPBLUR1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.33 - -$ MT_BISHOPPAINBLUR -spawnstate S_BISHOPPAINBLUR1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.33 - -$ MT_BISH_FX -spawnstate S_BISHFX1_1 -deathstate S_BISHFXI1_1 -deathsound BishopMissileExplode -speed 10 -radius 10 -height 6 -damage 1 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_SEEKERMISSILE - -S_BISHOP_LOOK1 BISH A 10 A_Look S_BISHOP_LOOK1 - -S_BISHOP_DECIDE BISH A 1 A_BishopDecide S_BISHOP_WALK1 - -S_BISHOP_BLUR1 BISH A 2 A_BishopDoBlur S_BISHOP_BLUR2 -S_BISHOP_BLUR2 BISH A 4 A_BishopSpawnBlur S_BISHOP_BLUR2 - -S_BISHOP_WALK1 BISH A 2 A_Chase S_BISHOP_WALK2 -S_BISHOP_WALK2 BISH A 2 A_BishopChase S_BISHOP_WALK3 -S_BISHOP_WALK3 BISH A 2 NULL S_BISHOP_WALK4 -S_BISHOP_WALK4 BISH B 2 A_BishopChase S_BISHOP_WALK5 -S_BISHOP_WALK5 BISH B 2 A_Chase S_BISHOP_WALK6 -S_BISHOP_WALK6 BISH B 2 A_BishopChase S_BISHOP_DECIDE - -S_BISHOP_ATK1 BISH A 3 A_FaceTarget S_BISHOP_ATK2 -S_BISHOP_ATK2 BISH D* 3 A_FaceTarget S_BISHOP_ATK3 -S_BISHOP_ATK3 BISH E* 3 A_FaceTarget S_BISHOP_ATK4 -S_BISHOP_ATK4 BISH F* 3 A_BishopAttack S_BISHOP_ATK5 -S_BISHOP_ATK5 BISH F* 5 A_BishopAttack2 S_BISHOP_ATK5 - -S_BISHOP_PAIN1 BISH C 6 A_Pain S_BISHOP_PAIN2 -S_BISHOP_PAIN2 BISH C 6 A_BishopPainBlur S_BISHOP_PAIN3 -S_BISHOP_PAIN3 BISH C 6 A_BishopPainBlur S_BISHOP_PAIN4 -S_BISHOP_PAIN4 BISH C 6 A_BishopPainBlur S_BISHOP_PAIN5 -S_BISHOP_PAIN5 BISH C 0 NULL S_BISHOP_WALK1 - -S_BISHOP_DEATH1 BISH G 6 NULL S_BISHOP_DEATH2 -S_BISHOP_DEATH2 BISH H* 6 A_Scream S_BISHOP_DEATH3 -S_BISHOP_DEATH3 BISH I* 5 A_NoBlocking S_BISHOP_DEATH4 -S_BISHOP_DEATH4 BISH J* 5 A_Explode S_BISHOP_DEATH5 -S_BISHOP_DEATH5 BISH K* 5 NULL S_BISHOP_DEATH6 -S_BISHOP_DEATH6 BISH L* 4 NULL S_BISHOP_DEATH7 -S_BISHOP_DEATH7 BISH M* 4 NULL S_BISHOP_DEATH8 -S_BISHOP_DEATH8 BISH N 4 A_BishopPuff S_BISHOP_DEATH9 -S_BISHOP_DEATH9 BISH O 4 A_QueueCorpse S_BISHOP_DEATH10 -S_BISHOP_DEATH10 BISH P -1 NULL S_NULL - -S_BISHOP_ICE BISH X 5 A_FreezeDeath S_BISHOP_ICE2 -S_BISHOP_ICE2 BISH X 1 A_FreezeDeathChunks S_BISHOP_ICE2 - -S_BISHOP_PUFF1 BISH Q 5 NULL S_BISHOP_PUFF2 -S_BISHOP_PUFF2 BISH R 5 NULL S_BISHOP_PUFF3 -S_BISHOP_PUFF3 BISH S 5 NULL S_BISHOP_PUFF4 -S_BISHOP_PUFF4 BISH T 5 NULL S_BISHOP_PUFF5 -S_BISHOP_PUFF5 BISH U 6 NULL S_BISHOP_PUFF6 -S_BISHOP_PUFF6 BISH V 6 NULL S_BISHOP_PUFF7 -S_BISHOP_PUFF7 BISH W 5 NULL S_NULL - -S_BISHOPBLUR1 BISH A 16 NULL S_BISHOPBLUR2 -S_BISHOPBLUR2 BISH A 8 A_SetAltShadow S_NULL - -S_BISHOPPAINBLUR1 BISH C 8 NULL S_NULL - -S_BISHFX1_1 BPFX A* 1 A_BishopMissileWeave S_BISHFX1_2 -S_BISHFX1_2 BPFX B* 1 A_BishopMissileWeave S_BISHFX1_3 -S_BISHFX1_3 BPFX A* 1 A_BishopMissileWeave S_BISHFX1_4 -S_BISHFX1_4 BPFX B* 1 A_BishopMissileWeave S_BISHFX1_5 -S_BISHFX1_5 BPFX B* 0 A_BishopMissileSeek S_BISHFX1_1 - -S_BISHFXI1_1 BPFX C* 4 NULL S_BISHFXI1_2 -S_BISHFXI1_2 BPFX D* 4 NULL S_BISHFXI1_3 -S_BISHFXI1_3 BPFX E* 4 NULL S_BISHFXI1_4 -S_BISHFXI1_4 BPFX F* 4 NULL S_BISHFXI1_5 -S_BISHFXI1_5 BPFX G* 3 NULL S_BISHFXI1_6 -S_BISHFXI1_6 BPFX H* 3 NULL S_NULL - - -// -// Dragon -// - -$ MT_DRAGON -doomednum 254 -spawnstate S_DRAGON_LOOK1 -spawnhealth 640 -seestate S_DRAGON_INIT -seesound DragonSight -attacksound DragonAttack -painstate S_DRAGON_PAIN1 -painchance 128 -painsound DragonPain -missilestate S_DRAGON_ATK1 -deathstate S_DRAGON_DEATH1 -deathsound DragonDeath -speed 10 -height 65 -mass 0x7fffffff -activesound DragonActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_FLOAT|MF_NOGRAVITY|MF_NOBLOOD -flags2 MF2_PASSMOBJ|MF2_BOSS - -$ MT_DRAGON_FX -spawnstate S_DRAGON_FX1_1 -deathstate S_DRAGON_FX1_X1 -deathsound DragonFireballExplode -speed 24 -radius 12 -height 10 -damage 6 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FIREDAMAGE - -$ MT_DRAGON_FX2 -spawnstate S_DRAGON_FX2_1 -deathsound DragonFireballExplode -radius 8 -height 8 -flags MF_NOBLOCKMAP -flags2 MF2_NOTELEPORT|MF2_FIREDAMAGE|MF2_DONTDRAW - -S_DRAGON_LOOK1 DRAG D 10 A_Look S_DRAGON_LOOK1 - -S_DRAGON_INIT DRAG C 5 NULL S_DRAGON_INIT2 -S_DRAGON_INIT2 DRAG B 5 NULL S_DRAGON_INIT3 -S_DRAGON_INIT3 DRAG A 5 A_DragonInitFlight S_DRAGON_WALK1 -S_DRAGON_WALK1 DRAG B 3 A_DragonFlap S_DRAGON_WALK2 -S_DRAGON_WALK2 DRAG B 3 A_DragonFlight S_DRAGON_WALK3 -S_DRAGON_WALK3 DRAG C 3 A_DragonFlight S_DRAGON_WALK4 -S_DRAGON_WALK4 DRAG C 3 A_DragonFlight S_DRAGON_WALK5 -S_DRAGON_WALK5 DRAG D 3 A_DragonFlight S_DRAGON_WALK6 -S_DRAGON_WALK6 DRAG D 3 A_DragonFlight S_DRAGON_WALK7 -S_DRAGON_WALK7 DRAG C 3 A_DragonFlight S_DRAGON_WALK8 -S_DRAGON_WALK8 DRAG C 3 A_DragonFlight S_DRAGON_WALK9 -S_DRAGON_WALK9 DRAG B 3 A_DragonFlight S_DRAGON_WALK10 -S_DRAGON_WALK10 DRAG B 3 A_DragonFlight S_DRAGON_WALK11 -S_DRAGON_WALK11 DRAG A 3 A_DragonFlight S_DRAGON_WALK12 -S_DRAGON_WALK12 DRAG A 3 A_DragonFlight S_DRAGON_WALK1 - -S_DRAGON_ATK1 DRAG E 8 A_DragonAttack S_DRAGON_WALK1 - -S_DRAGON_PAIN1 DRAG F 10 A_DragonPain S_DRAGON_WALK1 - -S_DRAGON_DEATH1 DRAG G 5 A_Scream S_DRAGON_DEATH2 -S_DRAGON_DEATH2 DRAG H 4 A_NoBlocking S_DRAGON_DEATH3 -S_DRAGON_DEATH3 DRAG I 4 NULL S_DRAGON_DEATH4 -S_DRAGON_DEATH4 DRAG J 4 A_DragonCheckCrash S_DRAGON_DEATH4 - -S_DRAGON_CRASH1 DRAG K 5 NULL S_DRAGON_CRASH2 -S_DRAGON_CRASH2 DRAG L 5 NULL S_DRAGON_CRASH3 -S_DRAGON_CRASH3 DRAG M -1 NULL S_NULL - -S_DRAGON_FX1_1 DRFX A* 4 NULL S_DRAGON_FX1_2 -S_DRAGON_FX1_2 DRFX B* 4 NULL S_DRAGON_FX1_3 -S_DRAGON_FX1_3 DRFX C* 4 NULL S_DRAGON_FX1_4 -S_DRAGON_FX1_4 DRFX D* 4 NULL S_DRAGON_FX1_5 -S_DRAGON_FX1_5 DRFX E* 4 NULL S_DRAGON_FX1_6 -S_DRAGON_FX1_6 DRFX F* 4 NULL S_DRAGON_FX1_1 - -S_DRAGON_FX1_X1 DRFX G* 4 NULL S_DRAGON_FX1_X2 -S_DRAGON_FX1_X2 DRFX H* 4 NULL S_DRAGON_FX1_X3 -S_DRAGON_FX1_X3 DRFX I* 4 NULL S_DRAGON_FX1_X4 -S_DRAGON_FX1_X4 DRFX J* 4 A_DragonFX2 S_DRAGON_FX1_X5 -S_DRAGON_FX1_X5 DRFX K* 3 NULL S_DRAGON_FX1_X6 -S_DRAGON_FX1_X6 DRFX L* 3 NULL S_NULL - -S_DRAGON_FX2_1 CFCF Q* 1 NULL S_DRAGON_FX2_2 -S_DRAGON_FX2_2 CFCF Q* 4 A_UnHideThing S_DRAGON_FX2_3 -S_DRAGON_FX2_3 CFCF R* 3 A_Scream S_DRAGON_FX2_4 -S_DRAGON_FX2_4 CFCF S* 4 NULL S_DRAGON_FX2_5 -S_DRAGON_FX2_5 CFCF T* 3 A_Explode S_DRAGON_FX2_6 -S_DRAGON_FX2_6 CFCF U* 4 NULL S_DRAGON_FX2_7 -S_DRAGON_FX2_7 CFCF V* 3 NULL S_DRAGON_FX2_8 -S_DRAGON_FX2_8 CFCF W* 4 NULL S_DRAGON_FX2_9 -S_DRAGON_FX2_9 CFCF X* 3 NULL S_DRAGON_FX2_10 -S_DRAGON_FX2_10 CFCF Y* 4 NULL S_DRAGON_FX2_11 -S_DRAGON_FX2_11 CFCF Z* 3 NULL S_NULL - - -// -// armor -// - -$ MT_ARMOR_1 -doomednum 8005 -spawnstate S_ARMOR_1 -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_ARMOR_2 -doomednum 8006 -spawnstate S_ARMOR_2 -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_ARMOR_3 -doomednum 8007 -spawnstate S_ARMOR_3 -flags MF_SPECIAL|MF_NOGRAVITY - -$ MT_ARMOR_4 -doomednum 8008 -spawnstate S_ARMOR_4 -flags MF_SPECIAL|MF_NOGRAVITY - -S_ARMOR_1 ARM1 A -1 NULL S_NULL -S_ARMOR_2 ARM2 A -1 NULL S_NULL -S_ARMOR_3 ARM3 A -1 NULL S_NULL -S_ARMOR_4 ARM4 A -1 NULL S_NULL - - -// -// mana -// - -$ MT_MANA1 -doomednum 122 -spawnstate S_MANA1_1 -spawnhealth 10 -radius 8 -height 8 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -$ MT_MANA2 -doomednum 124 -spawnstate S_MANA2_1 -spawnhealth 10 -radius 8 -height 8 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -$ MT_MANA3 -doomednum 8004 -spawnstate S_MANA3_1 -spawnhealth 20 -radius 8 -height 8 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_MANA1_1 MAN1 A* 4 NULL S_MANA1_2 -S_MANA1_2 MAN1 B* 4 NULL S_MANA1_3 -S_MANA1_3 MAN1 C* 4 NULL S_MANA1_4 -S_MANA1_4 MAN1 D* 4 NULL S_MANA1_5 -S_MANA1_5 MAN1 E* 4 NULL S_MANA1_6 -S_MANA1_6 MAN1 F* 4 NULL S_MANA1_7 -S_MANA1_7 MAN1 G* 4 NULL S_MANA1_8 -S_MANA1_8 MAN1 H* 4 NULL S_MANA1_9 -S_MANA1_9 MAN1 I* 4 NULL S_MANA1_1 - -S_MANA2_1 MAN2 A* 4 NULL S_MANA2_2 -S_MANA2_2 MAN2 B* 4 NULL S_MANA2_3 -S_MANA2_3 MAN2 C* 4 NULL S_MANA2_4 -S_MANA2_4 MAN2 D* 4 NULL S_MANA2_5 -S_MANA2_5 MAN2 E* 4 NULL S_MANA2_6 -S_MANA2_6 MAN2 F* 4 NULL S_MANA2_7 -S_MANA2_7 MAN2 G* 4 NULL S_MANA2_8 -S_MANA2_8 MAN2 H* 4 NULL S_MANA2_9 -S_MANA2_9 MAN2 I* 4 NULL S_MANA2_10 -S_MANA2_10 MAN2 J* 4 NULL S_MANA2_11 -S_MANA2_11 MAN2 K* 4 NULL S_MANA2_12 -S_MANA2_12 MAN2 L* 4 NULL S_MANA2_13 -S_MANA2_13 MAN2 M* 4 NULL S_MANA2_14 -S_MANA2_14 MAN2 N* 4 NULL S_MANA2_15 -S_MANA2_15 MAN2 O* 4 NULL S_MANA2_16 -S_MANA2_16 MAN2 P* 4 NULL S_MANA2_1 - -S_MANA3_1 MAN3 A* 4 NULL S_MANA3_2 -S_MANA3_2 MAN3 B* 4 NULL S_MANA3_3 -S_MANA3_3 MAN3 C* 4 NULL S_MANA3_4 -S_MANA3_4 MAN3 D* 4 NULL S_MANA3_5 -S_MANA3_5 MAN3 E* 4 NULL S_MANA3_6 -S_MANA3_6 MAN3 F* 4 NULL S_MANA3_7 -S_MANA3_7 MAN3 G* 4 NULL S_MANA3_8 -S_MANA3_8 MAN3 H* 4 NULL S_MANA3_9 -S_MANA3_9 MAN3 I* 4 NULL S_MANA3_10 -S_MANA3_10 MAN3 J* 4 NULL S_MANA3_11 -S_MANA3_11 MAN3 K* 4 NULL S_MANA3_12 -S_MANA3_12 MAN3 L* 4 NULL S_MANA3_13 -S_MANA3_13 MAN3 M* 4 NULL S_MANA3_14 -S_MANA3_14 MAN3 N* 4 NULL S_MANA3_15 -S_MANA3_15 MAN3 O* 4 NULL S_MANA3_16 -S_MANA3_16 MAN3 P* 4 NULL S_MANA3_1 - - -// -// keys -// - -$ MT_KEY1 -doomednum 8030 -spawnstate S_KEY1 -radius 8 -height 20 -flags MF_SPECIAL - -$ MT_KEY2 -doomednum 8031 -spawnstate S_KEY2 -radius 8 -height 20 -flags MF_SPECIAL - -$ MT_KEY3 -doomednum 8032 -spawnstate S_KEY3 -radius 8 -height 20 -flags MF_SPECIAL - -$ MT_KEY4 -doomednum 8033 -spawnstate S_KEY4 -radius 8 -height 20 -flags MF_SPECIAL - -$ MT_KEY5 -doomednum 8034 -spawnstate S_KEY5 -radius 8 -height 20 -flags MF_SPECIAL - -$ MT_KEY6 -doomednum 8035 -spawnstate S_KEY6 -radius 8 -height 20 -flags MF_SPECIAL - -$ MT_KEY7 -doomednum 8036 -spawnstate S_KEY7 -radius 8 -height 20 -flags MF_SPECIAL - -$ MT_KEY8 -doomednum 8037 -spawnstate S_KEY8 -radius 8 -height 20 -flags MF_SPECIAL - -$ MT_KEY9 -doomednum 8038 -spawnstate S_KEY9 -radius 8 -height 20 -flags MF_SPECIAL - -$ MT_KEYA -doomednum 8039 -spawnstate S_KEYA -radius 8 -height 20 -flags MF_SPECIAL - -$ MT_KEYB -doomednum 8200 -spawnstate S_KEYB -radius 8 -height 20 -flags MF_SPECIAL - -S_KEY1 KEY1 A -1 NULL S_NULL -S_KEY2 KEY2 A -1 NULL S_NULL -S_KEY3 KEY3 A -1 NULL S_NULL -S_KEY4 KEY4 A -1 NULL S_NULL -S_KEY5 KEY5 A -1 NULL S_NULL -S_KEY6 KEY6 A -1 NULL S_NULL -S_KEY7 KEY7 A -1 NULL S_NULL -S_KEY8 KEY8 A -1 NULL S_NULL -S_KEY9 KEY9 A -1 NULL S_NULL -S_KEYA KEYA A -1 NULL S_NULL -S_KEYB KEYB A -1 NULL S_NULL - -// -// ambience -// - -$ MT_SOUNDWIND -doomednum 1410 -spawnstate S_SND_WIND1 -flags MF_NOBLOCKMAP|MF_NOSECTOR - -$ MT_SOUNDWATERFALL -doomednum 41 -spawnstate S_SND_WATERFALL -flags MF_NOBLOCKMAP|MF_NOSECTOR - -S_SND_WIND1 TLGL A 1 NULL S_SND_WIND2 -S_SND_WIND2 TLGL A 200 A_ESound S_SND_WIND2 - -S_SND_WATERFALL TLGL A 85 A_ESound S_SND_WATERFALL - - -// -// Ettin -// - -$ MT_ETTIN -doomednum 10030 -spawnstate S_ETTIN_LOOK1 -spawnhealth 175 -seestate S_ETTIN_CHASE1 -seesound EttinSight -attacksound EttinAttack -painstate S_ETTIN_PAIN1 -painchance 60 -painsound EttinPain -meleestate S_ETTIN_ATK1_1 -deathstate S_ETTIN_DEATH1_1 -xdeathstate S_ETTIN_DEATH2_1 -deathsound EttinDeath -speed 13 -radius 25 -height 68 -damage 3 -mass 175 -activesound EttinActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FLOORCLIP|MF2_PUSHWALL|MF2_MCROSS|MF2_TELESTOMP - -$ MT_ETTIN_MACE -spawnstate S_ETTIN_MACE1 -deathstate S_ETTIN_MACE5 -radius 5 -height 5 -flags MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -S_ETTIN_LOOK1 ETTN A 10 A_Look S_ETTIN_LOOK2 -S_ETTIN_LOOK2 ETTN A 10 A_Look S_ETTIN_LOOK1 - -S_ETTIN_CHASE1 ETTN A 5 A_Chase S_ETTIN_CHASE2 -S_ETTIN_CHASE2 ETTN B 5 A_Chase S_ETTIN_CHASE3 -S_ETTIN_CHASE3 ETTN C 5 A_Chase S_ETTIN_CHASE4 -S_ETTIN_CHASE4 ETTN D 5 A_Chase S_ETTIN_CHASE1 - -S_ETTIN_PAIN1 ETTN H 7 A_Pain S_ETTIN_CHASE1 - -S_ETTIN_ATK1_1 ETTN E 6 A_FaceTarget S_ETTIN_ATK1_2 -S_ETTIN_ATK1_2 ETTN F 6 A_FaceTarget S_ETTIN_ATK1_3 -S_ETTIN_ATK1_3 ETTN G 8 A_EttinAttack S_ETTIN_CHASE1 - -S_ETTIN_DEATH1_1 ETTN I 4 NULL S_ETTIN_DEATH1_2 -S_ETTIN_DEATH1_2 ETTN J 4 NULL S_ETTIN_DEATH1_3 -S_ETTIN_DEATH1_3 ETTN K 4 A_Scream S_ETTIN_DEATH1_4 -S_ETTIN_DEATH1_4 ETTN L 4 A_NoBlocking S_ETTIN_DEATH1_5 -S_ETTIN_DEATH1_5 ETTN M 4 A_QueueCorpse S_ETTIN_DEATH1_6 -S_ETTIN_DEATH1_6 ETTN N 4 NULL S_ETTIN_DEATH1_7 -S_ETTIN_DEATH1_7 ETTN O 4 NULL S_ETTIN_DEATH1_8 -S_ETTIN_DEATH1_8 ETTN P 4 NULL S_ETTIN_DEATH1_9 -S_ETTIN_DEATH1_9 ETTN Q -1 NULL S_NULL - -S_ETTIN_DEATH2_1 ETTB A 4 NULL S_ETTIN_DEATH2_2 -S_ETTIN_DEATH2_2 ETTB B 4 A_NoBlocking S_ETTIN_DEATH2_3 -S_ETTIN_DEATH2_3 ETTB C 4 A_DropMace S_ETTIN_DEATH2_4 -S_ETTIN_DEATH2_4 ETTB D 4 A_Scream S_ETTIN_DEATH2_5 -S_ETTIN_DEATH2_5 ETTB E 4 A_QueueCorpse S_ETTIN_DEATH2_6 -S_ETTIN_DEATH2_6 ETTB F 4 NULL S_ETTIN_DEATH2_7 -S_ETTIN_DEATH2_7 ETTB G 4 NULL S_ETTIN_DEATH2_8 -S_ETTIN_DEATH2_8 ETTB H 4 NULL S_ETTIN_DEATH2_9 -S_ETTIN_DEATH2_9 ETTB I 4 NULL S_ETTIN_DEATH2_0 -S_ETTIN_DEATH2_0 ETTB J 4 NULL S_ETTIN_DEATH2_A -S_ETTIN_DEATH2_A ETTB K 4 NULL S_ETTIN_DEATH2_B -S_ETTIN_DEATH2_B ETTB L -1 NULL S_NULL - -S_ETTIN_ICE1 ETTN R 5 A_FreezeDeath S_ETTIN_ICE2 -S_ETTIN_ICE2 ETTN R 1 A_FreezeDeathChunks S_ETTIN_ICE2 - -S_ETTIN_MACE1 ETTB M 5 A_CheckFloor S_ETTIN_MACE2 -S_ETTIN_MACE2 ETTB N 5 A_CheckFloor S_ETTIN_MACE3 -S_ETTIN_MACE3 ETTB O 5 A_CheckFloor S_ETTIN_MACE4 -S_ETTIN_MACE4 ETTB P 5 A_CheckFloor S_ETTIN_MACE1 -S_ETTIN_MACE5 ETTB Q 5 NULL S_ETTIN_MACE6 -S_ETTIN_MACE6 ETTB R 5 A_QueueCorpse S_ETTIN_MACE7 -S_ETTIN_MACE7 ETTB S -1 NULL S_NULL - - -// -// Fire Demon -// - -$ MT_FIREDEMON -doomednum 10060 -spawnstate S_FIRED_SPAWN1 -spawnhealth 80 -seestate S_FIRED_LOOK4 -seesound FireDemonSpawn -painstate S_FIRED_PAIN1 -painchance 1 -painsound FireDemonPain -missilestate S_FIRED_ATTACK1 -crashstate S_FIRED_XDEATH1 -deathstate S_FIRED_DEATH1 -xdeathstate S_FIRED_XDEATH1 -deathsound FireDemonDeath -speed 13 -height 68 -damage 1 -mass 75 -activesound FireDemonActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_DROPOFF|MF_NOGRAVITY|MF_FLOAT -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_INVULNERABLE|MF2_MCROSS|MF2_TELESTOMP - -$ MT_FIREDEMON_SPLOTCH1 -spawnstate S_FIRED_CORPSE1 -radius 3 -flags MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -$ MT_FIREDEMON_SPLOTCH2 -spawnstate S_FIRED_CORPSE4 -radius 3 -flags MF_DROPOFF|MF_CORPSE -flags2 MF2_NOTELEPORT|MF2_FLOORCLIP - -$ MT_FIREDEMON_FX1 -spawnstate S_FIRED_RDROP1 -deathstate S_FIRED_RDEAD1_1 -xdeathstate S_FIRED_RDEAD1_2 -radius 3 -height 5 -mass 16 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT - -$ MT_FIREDEMON_FX2 -spawnstate S_FIRED_RDROP2 -deathstate S_FIRED_RDEAD2_1 -xdeathstate S_FIRED_RDEAD2_2 -radius 3 -height 5 -mass 16 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT - -$ MT_FIREDEMON_FX3 -spawnstate S_FIRED_RDROP3 -deathstate S_FIRED_RDEAD3_1 -xdeathstate S_FIRED_RDEAD3_2 -radius 3 -height 5 -mass 16 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT - -$ MT_FIREDEMON_FX4 -spawnstate S_FIRED_RDROP4 -deathstate S_FIRED_RDEAD4_1 -xdeathstate S_FIRED_RDEAD4_2 -radius 3 -height 5 -mass 16 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT - -$ MT_FIREDEMON_FX5 -spawnstate S_FIRED_RDROP5 -deathstate S_FIRED_RDEAD5_1 -xdeathstate S_FIRED_RDEAD5_2 -radius 3 -height 5 -mass 16 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT - -$ MT_FIREDEMON_FX6 -spawnstate S_FIRED_FX6_1 -deathstate S_FIRED_FX6_2 -deathsound FireDemonMissileHit -speed 10 -radius 10 -height 6 -damage 1 -mass 15 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT|MF2_IMPACT|MF2_PCROSS|MF2_FLOORCLIP|MF2_FIREDAMAGE - -S_FIRED_SPAWN1 FDMN X* 5 NULL S_FIRED_LOOK1 -S_FIRED_LOOK1 FDMN E* 10 A_Look S_FIRED_LOOK2 -S_FIRED_LOOK2 FDMN F* 10 A_Look S_FIRED_LOOK3 -S_FIRED_LOOK3 FDMN G* 10 A_Look S_FIRED_LOOK1 -S_FIRED_LOOK4 FDMN E* 8 NULL S_FIRED_LOOK5 -S_FIRED_LOOK5 FDMN F* 6 NULL S_FIRED_LOOK6 -S_FIRED_LOOK6 FDMN G* 5 NULL S_FIRED_LOOK7 -S_FIRED_LOOK7 FDMN F* 8 NULL S_FIRED_LOOK8 -S_FIRED_LOOK8 FDMN E* 6 NULL S_FIRED_LOOK9 -S_FIRED_LOOK9 FDMN F* 7 A_FiredRocks S_FIRED_LOOK0 -S_FIRED_LOOK0 FDMN H* 5 NULL S_FIRED_LOOKA -S_FIRED_LOOKA FDMN I* 5 NULL S_FIRED_LOOKB -S_FIRED_LOOKB FDMN J* 5 A_UnSetInvulnerable S_FIRED_WALK1 - -S_FIRED_WALK1 FDMN A* 5 A_FiredChase S_FIRED_WALK2 -S_FIRED_WALK2 FDMN B* 5 A_FiredChase S_FIRED_WALK3 -S_FIRED_WALK3 FDMN C* 5 A_FiredChase S_FIRED_WALK1 - -S_FIRED_PAIN1 FDMN D* 6 A_Pain S_FIRED_WALK1 - -S_FIRED_ATTACK1 FDMN K* 3 A_FaceTarget S_FIRED_ATTACK2 -S_FIRED_ATTACK2 FDMN K* 5 A_FiredAttack S_FIRED_ATTACK3 -S_FIRED_ATTACK3 FDMN K* 5 A_FiredAttack S_FIRED_ATTACK4 -S_FIRED_ATTACK4 FDMN K* 5 A_FiredAttack S_FIRED_WALK1 - -S_FIRED_DEATH1 FDMN D* 4 A_FaceTarget S_FIRED_DEATH2 -S_FIRED_DEATH2 FDMN L* 4 A_Scream S_FIRED_DEATH3 -S_FIRED_DEATH3 FDMN L* 4 A_NoBlocking S_FIRED_DEATH4 -S_FIRED_DEATH4 FDMN L* 200 NULL S_NULL - -S_FIRED_XDEATH1 FDMN M 5 A_FaceTarget S_FIRED_XDEATH2 -S_FIRED_XDEATH2 FDMN N 5 A_NoBlocking S_FIRED_XDEATH3 -S_FIRED_XDEATH3 FDMN O 5 A_FiredSplotch S_NULL - -S_FIRED_ICE1 FDMN R 5 A_FreezeDeath S_FIRED_ICE2 -S_FIRED_ICE2 FDMN R 1 A_FreezeDeathChunks S_FIRED_ICE2 - -S_FIRED_CORPSE1 FDMN P 3 NULL S_FIRED_CORPSE2 -S_FIRED_CORPSE2 FDMN P 6 A_QueueCorpse S_FIRED_CORPSE3 -S_FIRED_CORPSE3 FDMN Y -1 NULL S_NULL - -S_FIRED_CORPSE4 FDMN Q 3 NULL S_FIRED_CORPSE5 -S_FIRED_CORPSE5 FDMN Q 6 A_QueueCorpse S_FIRED_CORPSE6 -S_FIRED_CORPSE6 FDMN Z -1 NULL S_NULL - -S_FIRED_RDROP1 FDMN S 4 NULL S_FIRED_RDROP1 -S_FIRED_RDEAD1_1 FDMN S 5 A_SmBounce S_FIRED_RDEAD1_2 -S_FIRED_RDEAD1_2 FDMN S 200 NULL S_NULL - -S_FIRED_RDROP2 FDMN T 4 NULL S_FIRED_RDROP2 -S_FIRED_RDEAD2_1 FDMN T 5 A_SmBounce S_FIRED_RDEAD2_2 -S_FIRED_RDEAD2_2 FDMN T 200 NULL S_NULL - -S_FIRED_RDROP3 FDMN U 4 NULL S_FIRED_RDROP3 -S_FIRED_RDEAD3_1 FDMN U 5 A_SmBounce S_FIRED_RDEAD3_2 -S_FIRED_RDEAD3_2 FDMN U 200 NULL S_NULL - -S_FIRED_RDROP4 FDMN V 4 NULL S_FIRED_RDROP4 -S_FIRED_RDEAD4_1 FDMN V 5 A_SmBounce S_FIRED_RDEAD4_2 -S_FIRED_RDEAD4_2 FDMN V 200 NULL S_NULL - -S_FIRED_RDROP5 FDMN W 4 NULL S_FIRED_RDROP5 -S_FIRED_RDEAD5_1 FDMN W 5 A_SmBounce S_FIRED_RDEAD5_2 -S_FIRED_RDEAD5_2 FDMN W 200 NULL S_NULL - -S_FIRED_FX6_1 FDMB A* 5 NULL S_FIRED_FX6_1 -S_FIRED_FX6_2 FDMB B* 5 NULL S_FIRED_FX6_3 -S_FIRED_FX6_3 FDMB C* 5 NULL S_FIRED_FX6_4 -S_FIRED_FX6_4 FDMB D* 5 NULL S_FIRED_FX6_5 -S_FIRED_FX6_5 FDMB E* 5 NULL S_NULL - - -// -// "Ice Guy" -// - -$ MT_ICEGUY -doomednum 8020 -spawnstate S_ICEGUY_LOOK -spawnhealth 120 -seestate S_ICEGUY_WALK1 -seesound IceGuySight -attacksound IceGuyAttack -painstate S_ICEGUY_PAIN1 -painchance 144 -meleestate 0 -missilestate S_ICEGUY_ATK1 -deathstate S_ICEGUY_DEATH -speed 14 -radius 22 -height 75 -mass 150 -activesound IceGuyActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_NOBLOOD -flags2 MF2_PASSMOBJ|MF2_PUSHWALL|MF2_ICEDAMAGE|MF2_MCROSS|MF2_TELESTOMP - -$ MT_ICEGUY_FX -spawnstate S_ICEGUY_FX1 -deathstate S_ICEGUY_FX_X1 -deathsound IceGuyMissileExplode -speed 14 -radius 8 -height 10 -damage 1 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_ICEDAMAGE - -$ MT_ICEFX_PUFF -spawnstate S_ICEFX_PUFF1 -radius 1 -height 1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF -flags2 MF2_NOTELEPORT -translucency 0.33 - -$ MT_ICEGUY_FX2 -spawnstate S_ICEGUY_FX2_1 -speed 10 -radius 4 -height 4 -damage 1 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE -flags2 MF2_NOTELEPORT|MF2_LOGRAV|MF2_ICEDAMAGE - -$ MT_ICEGUY_BIT -spawnstate S_ICEGUY_BIT1 -radius 1 -height 1 -flags MF_NOBLOCKMAP|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_LOGRAV - -$ MT_ICEGUY_WISP1 -spawnstate S_ICEGUY_WISP1_1 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_NOGRAVITY|MF_MISSILE -flags2 MF2_NOTELEPORT -translucency 0.66 - -$ MT_ICEGUY_WISP2 -spawnstate S_ICEGUY_WISP2_1 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_NOGRAVITY|MF_MISSILE -flags2 MF2_NOTELEPORT -translucency 0.66 - -S_ICEGUY_LOOK ICEY A 10 A_IceGuyLook S_ICEGUY_LOOK - -S_ICEGUY_DORMANT ICEY A -1 NULL S_ICEGUY_LOOK - -S_ICEGUY_WALK1 ICEY A 4 A_Chase S_ICEGUY_WALK2 -S_ICEGUY_WALK2 ICEY B 4 A_IceGuyChase S_ICEGUY_WALK3 -S_ICEGUY_WALK3 ICEY C 4 A_Chase S_ICEGUY_WALK4 -S_ICEGUY_WALK4 ICEY D 4 A_Chase S_ICEGUY_WALK1 - -S_ICEGUY_ATK1 ICEY E 3 A_FaceTarget S_ICEGUY_ATK2 -S_ICEGUY_ATK2 ICEY F 3 A_FaceTarget S_ICEGUY_ATK3 -S_ICEGUY_ATK3 ICEY G* 8 A_IceGuyAttack S_ICEGUY_ATK4 -S_ICEGUY_ATK4 ICEY F 4 A_FaceTarget S_ICEGUY_WALK1 - -S_ICEGUY_PAIN1 ICEY A 1 A_Pain S_ICEGUY_WALK1 - -S_ICEGUY_DEATH ICEY A 1 A_IceGuyDie S_NULL - -S_ICEGUY_FX1 ICPR A* 3 A_IceGuyMissilePuff S_ICEGUY_FX2 -S_ICEGUY_FX2 ICPR B* 3 A_IceGuyMissilePuff S_ICEGUY_FX3 -S_ICEGUY_FX3 ICPR C* 3 A_IceGuyMissilePuff S_ICEGUY_FX1 - -S_ICEGUY_FX_X1 ICPR D* 4 NULL S_ICEGUY_FX_X2 -S_ICEGUY_FX_X2 ICPR E* 4 A_IceGuyMissileExplode S_ICEGUY_FX_X3 -S_ICEGUY_FX_X3 ICPR F* 4 NULL S_ICEGUY_FX_X4 -S_ICEGUY_FX_X4 ICPR G* 4 NULL S_ICEGUY_FX_X5 -S_ICEGUY_FX_X5 ICPR H* 3 NULL S_NULL - -S_ICEFX_PUFF1 ICPR I 3 NULL S_ICEFX_PUFF2 -S_ICEFX_PUFF2 ICPR J 3 NULL S_ICEFX_PUFF3 -S_ICEFX_PUFF3 ICPR K 3 NULL S_ICEFX_PUFF4 -S_ICEFX_PUFF4 ICPR L 2 NULL S_ICEFX_PUFF5 -S_ICEFX_PUFF5 ICPR M 2 NULL S_NULL - -S_ICEGUY_FX2_1 ICPR N* 3 NULL S_ICEGUY_FX2_2 -S_ICEGUY_FX2_2 ICPR O* 3 NULL S_ICEGUY_FX2_3 -S_ICEGUY_FX2_3 ICPR P* 3 NULL S_ICEGUY_FX2_1 - -S_ICEGUY_BIT1 ICPR Q* 50 NULL S_NULL -S_ICEGUY_BIT2 ICPR R* 50 NULL S_NULL - -S_ICEGUY_WISP1_1 ICWS A 2 NULL S_ICEGUY_WISP1_2 -S_ICEGUY_WISP1_2 ICWS B 2 NULL S_ICEGUY_WISP1_3 -S_ICEGUY_WISP1_3 ICWS C 2 NULL S_ICEGUY_WISP1_4 -S_ICEGUY_WISP1_4 ICWS D 2 NULL S_ICEGUY_WISP1_5 -S_ICEGUY_WISP1_5 ICWS E 2 NULL S_ICEGUY_WISP1_6 -S_ICEGUY_WISP1_6 ICWS F 2 NULL S_ICEGUY_WISP1_7 -S_ICEGUY_WISP1_7 ICWS G 2 NULL S_ICEGUY_WISP1_8 -S_ICEGUY_WISP1_8 ICWS H 2 NULL S_ICEGUY_WISP1_9 -S_ICEGUY_WISP1_9 ICWS I 2 NULL S_NULL - -S_ICEGUY_WISP2_1 ICWS J 2 NULL S_ICEGUY_WISP2_2 -S_ICEGUY_WISP2_2 ICWS K 2 NULL S_ICEGUY_WISP2_3 -S_ICEGUY_WISP2_3 ICWS L 2 NULL S_ICEGUY_WISP2_4 -S_ICEGUY_WISP2_4 ICWS M 2 NULL S_ICEGUY_WISP2_5 -S_ICEGUY_WISP2_5 ICWS N 2 NULL S_ICEGUY_WISP2_6 -S_ICEGUY_WISP2_6 ICWS O 2 NULL S_ICEGUY_WISP2_7 -S_ICEGUY_WISP2_7 ICWS P 2 NULL S_ICEGUY_WISP2_8 -S_ICEGUY_WISP2_8 ICWS Q 2 NULL S_ICEGUY_WISP2_9 -S_ICEGUY_WISP2_9 ICWS R 2 NULL S_NULL - - -// -// Fighter Boss -// - -$ MT_FIGHTER_BOSS -doomednum 10100 -spawnstate S_FIGHTER -spawnhealth 800 -seestate S_FIGHTER_RUN1 -painstate S_FIGHTER_PAIN -painchance 50 -painsound PlayerFighterPain -meleestate S_FIGHTER_ATK1 -missilestate S_FIGHTER_ATK1 -deathstate S_FIGHTER_DIE1 -xdeathstate S_FIGHTER_XDIE1 -deathsound PlayerFighterCrazyDeath -speed 25 -radius 16 -height 64 -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_TELESTOMP|MF2_PUSHWALL|MF2_MCROSS - -S_FIGHTER PLAY A 2 NULL S_FIGHTER2 -S_FIGHTER2 PLAY A 3 A_ClassBossHealth S_FIGHTERLOOK - -S_FIGHTERLOOK PLAY A 5 A_Look S_FIGHTERLOOK - -S_FIGHTER_RUN1 PLAY A 4 A_FastChase S_FIGHTER_RUN2 -S_FIGHTER_RUN2 PLAY B 4 A_FastChase S_FIGHTER_RUN3 -S_FIGHTER_RUN3 PLAY C 4 A_FastChase S_FIGHTER_RUN4 -S_FIGHTER_RUN4 PLAY D 4 A_FastChase S_FIGHTER_RUN1 - -S_FIGHTER_ATK1 PLAY E 8 A_FaceTarget S_FIGHTER_ATK2 -S_FIGHTER_ATK2 PLAY F 8 A_FighterAttack S_FIGHTER_RUN1 - -S_FIGHTER_PAIN PLAY G 4 NULL S_FIGHTER_PAIN2 -S_FIGHTER_PAIN2 PLAY G 4 A_Pain S_FIGHTER_RUN1 - -S_FIGHTER_DIE1 PLAY H 6 NULL S_FIGHTER_DIE2 -S_FIGHTER_DIE2 PLAY I 6 A_Scream S_FIGHTER_DIE3 -S_FIGHTER_DIE3 PLAY J 6 NULL S_FIGHTER_DIE4 -S_FIGHTER_DIE4 PLAY K 6 NULL S_FIGHTER_DIE5 -S_FIGHTER_DIE5 PLAY L 6 A_NoBlocking S_FIGHTER_DIE6 -S_FIGHTER_DIE6 PLAY M 6 NULL S_FIGHTER_DIE7 -S_FIGHTER_DIE7 PLAY N -1 NULL S_NULL - -S_FIGHTER_XDIE1 PLAY O 5 A_Scream S_FIGHTER_XDIE2 -S_FIGHTER_XDIE2 PLAY P 5 A_SkullPop S_FIGHTER_XDIE3 -S_FIGHTER_XDIE3 PLAY R 5 A_NoBlocking S_FIGHTER_XDIE4 -S_FIGHTER_XDIE4 PLAY S 5 NULL S_FIGHTER_XDIE5 -S_FIGHTER_XDIE5 PLAY T 5 NULL S_FIGHTER_XDIE6 -S_FIGHTER_XDIE6 PLAY U 5 NULL S_FIGHTER_XDIE7 -S_FIGHTER_XDIE7 PLAY V 5 NULL S_FIGHTER_XDIE8 -S_FIGHTER_XDIE8 PLAY W -1 NULL S_NULL - -S_FIGHTER_ICE PLAY X 5 A_FreezeDeath S_FIGHTER_ICE2 -S_FIGHTER_ICE2 PLAY X 1 A_FreezeDeathChunks S_FIGHTER_ICE2 - - -// -// Cleric Boss -// - -$ MT_CLERIC_BOSS -doomednum 10101 -spawnstate S_CLERIC -spawnhealth 800 -seestate S_CLERIC_RUN1 -painstate S_CLERIC_PAIN -painchance 50 -painsound PlayerClericPain -meleestate S_CLERIC_ATK1 -missilestate S_CLERIC_ATK1 -deathstate S_CLERIC_DIE1 -xdeathstate S_CLERIC_XDIE1 -deathsound PlayerClericCrazyDeath -speed 25 -radius 16 -height 64 -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_TELESTOMP|MF2_PUSHWALL|MF2_MCROSS - -S_CLERIC CLER A 2 NULL S_CLERIC2 -S_CLERIC2 CLER A 3 A_ClassBossHealth S_CLERICLOOK -S_CLERICLOOK CLER A 5 A_Look S_CLERICLOOK - -S_CLERIC_RUN1 CLER A 4 A_FastChase S_CLERIC_RUN2 -S_CLERIC_RUN2 CLER B 4 A_FastChase S_CLERIC_RUN3 -S_CLERIC_RUN3 CLER C 4 A_FastChase S_CLERIC_RUN4 -S_CLERIC_RUN4 CLER D 4 A_FastChase S_CLERIC_RUN1 - -S_CLERIC_ATK1 CLER E 8 A_FaceTarget S_CLERIC_ATK2 -S_CLERIC_ATK2 CLER F 8 A_FaceTarget S_CLERIC_ATK3 -S_CLERIC_ATK3 CLER G 10 A_ClericAttack S_CLERIC_RUN1 - -S_CLERIC_PAIN CLER H 4 NULL S_CLERIC_PAIN2 -S_CLERIC_PAIN2 CLER H 4 A_Pain S_CLERIC_RUN1 - -S_CLERIC_DIE1 CLER I 6 NULL S_CLERIC_DIE2 -S_CLERIC_DIE2 CLER K 6 A_Scream S_CLERIC_DIE3 -S_CLERIC_DIE3 CLER L 6 NULL S_CLERIC_DIE4 -S_CLERIC_DIE4 CLER L 6 NULL S_CLERIC_DIE5 -S_CLERIC_DIE5 CLER M 6 A_NoBlocking S_CLERIC_DIE6 -S_CLERIC_DIE6 CLER N 6 NULL S_CLERIC_DIE7 -S_CLERIC_DIE7 CLER O 6 NULL S_CLERIC_DIE8 -S_CLERIC_DIE8 CLER P 6 NULL S_CLERIC_DIE9 -S_CLERIC_DIE9 CLER Q -1 NULL S_NULL - -S_CLERIC_XDIE1 CLER R 5 A_Scream S_CLERIC_XDIE2 -S_CLERIC_XDIE2 CLER S 5 NULL S_CLERIC_XDIE3 -S_CLERIC_XDIE3 CLER T 5 A_NoBlocking S_CLERIC_XDIE4 -S_CLERIC_XDIE4 CLER U 5 NULL S_CLERIC_XDIE5 -S_CLERIC_XDIE5 CLER V 5 NULL S_CLERIC_XDIE6 -S_CLERIC_XDIE6 CLER W 5 NULL S_CLERIC_XDIE7 -S_CLERIC_XDIE7 CLER X 5 NULL S_CLERIC_XDIE8 -S_CLERIC_XDIE8 CLER Y 5 NULL S_CLERIC_XDIE9 -S_CLERIC_XDIE9 CLER Z 5 NULL S_CLERIC_XDIE10 -S_CLERIC_XDIE10 CLER [ -1 NULL S_NULL - -S_CLERIC_ICE CLER \ 5 A_FreezeDeath S_CLERIC_ICE2 -S_CLERIC_ICE2 CLER \ 1 A_FreezeDeathChunks S_CLERIC_ICE2 - - -// -// Mage Boss -// - -$ MT_MAGE_BOSS -doomednum 10102 -spawnstate S_MAGE -spawnhealth 800 -seestate S_MAGE_RUN1 -painstate S_MAGE_PAIN -painchance 50 -painsound PlayerMagePain -meleestate S_MAGE_ATK1 -missilestate S_MAGE_ATK1 -deathstate S_MAGE_DIE1 -xdeathstate S_MAGE_XDIE1 -deathsound PlayerMageCrazyDeath -speed 25 -radius 16 -height 64 -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_TELESTOMP|MF2_PUSHWALL|MF2_MCROSS - -S_MAGE MAGE A 2 NULL S_MAGE2 -S_MAGE2 MAGE A 3 A_ClassBossHealth S_MAGELOOK -S_MAGELOOK MAGE A 5 A_Look S_MAGELOOK - -S_MAGE_RUN1 MAGE A 4 A_FastChase S_MAGE_RUN2 -S_MAGE_RUN2 MAGE B 4 A_FastChase S_MAGE_RUN3 -S_MAGE_RUN3 MAGE C 4 A_FastChase S_MAGE_RUN4 -S_MAGE_RUN4 MAGE D 4 A_FastChase S_MAGE_RUN1 - -S_MAGE_ATK1 MAGE E 8 A_FaceTarget S_MAGE_ATK2 -S_MAGE_ATK2 MAGE F* 8 A_MageAttack S_MAGE_RUN1 - -S_MAGE_PAIN MAGE G 4 NULL S_MAGE_PAIN2 -S_MAGE_PAIN2 MAGE G 4 A_Pain S_MAGE_RUN1 - -S_MAGE_DIE1 MAGE H 6 NULL S_MAGE_DIE2 -S_MAGE_DIE2 MAGE I 6 A_Scream S_MAGE_DIE3 -S_MAGE_DIE3 MAGE J 6 NULL S_MAGE_DIE4 -S_MAGE_DIE4 MAGE K 6 NULL S_MAGE_DIE5 -S_MAGE_DIE5 MAGE L 6 A_NoBlocking S_MAGE_DIE6 -S_MAGE_DIE6 MAGE M 6 NULL S_MAGE_DIE7 -S_MAGE_DIE7 MAGE N -1 NULL S_NULL - -S_MAGE_XDIE1 MAGE O 5 A_Scream S_MAGE_XDIE2 -S_MAGE_XDIE2 MAGE P 5 NULL S_MAGE_XDIE3 -S_MAGE_XDIE3 MAGE R 5 A_NoBlocking S_MAGE_XDIE4 -S_MAGE_XDIE4 MAGE S 5 NULL S_MAGE_XDIE5 -S_MAGE_XDIE5 MAGE T 5 NULL S_MAGE_XDIE6 -S_MAGE_XDIE6 MAGE U 5 NULL S_MAGE_XDIE7 -S_MAGE_XDIE7 MAGE V 5 NULL S_MAGE_XDIE8 -S_MAGE_XDIE8 MAGE W 5 NULL S_MAGE_XDIE9 -S_MAGE_XDIE9 MAGE X -1 NULL S_NULL - -S_MAGE_ICE MAGE Y 5 A_FreezeDeath S_MAGE_ICE2 -S_MAGE_ICE2 MAGE Y 1 A_FreezeDeathChunks S_MAGE_ICE2 - - -// -// Sorcerer Boss (Heresiarch) -// - -$ MT_SORCBOSS -doomednum 10080 -spawnstate S_SORC_SPAWN1 -spawnhealth 5000 -seestate S_SORC_WALK1 -seesound SorcererSight -painstate S_SORC_PAIN1 -painchance 10 -painsound SorcererPain -missilestate S_SORC_ATK2_1 -deathstate S_SORC_DIE1 -deathsound SorcererDeathScream -speed 16 -radius 40 -height 110 -damage 9 -mass 500 -activesound SorcererActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_NOBLOOD -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_BOSS|MF2_MCROSS - -$ MT_SORCBALL1 -spawnstate S_SORCBALL1_1 -seesound SorcererBallBounce -painstate S_SORCBALL1_D1 -deathstate S_SORCBALL1_D5 -speed 10 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE -flags2 MF2_NOTELEPORT|MF2_FLOORBOUNCE - -$ MT_SORCBALL2 -spawnstate S_SORCBALL2_1 -seesound SorcererBallBounce -painstate S_SORCBALL2_D1 -deathstate S_SORCBALL2_D5 -speed 10 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE -flags2 MF2_NOTELEPORT|MF2_FLOORBOUNCE - -$ MT_SORCBALL3 -spawnstate S_SORCBALL3_1 -seesound SorcererBallBounce -painstate S_SORCBALL3_D1 -deathstate S_SORCBALL3_D5 -speed 10 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE -flags2 MF2_NOTELEPORT|MF2_FLOORBOUNCE - -$ MT_SORCFX1 -spawnstate S_SORCFX1_1 -seesound SorcererBallBounce -deathstate S_SORCFX1_D1 -xdeathstate S_SORCFX1_D1 -speed 7 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_MISSILE -flags2 MF2_NOTELEPORT|MF2_FLOORBOUNCE - -$ MT_SORCFX2 -spawnstate S_SORCFX2_SPLIT1 -deathstate S_SORCFX2T1 -speed 15 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_SORCFX2_T1 -spawnstate S_SORCFX2T1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -flags2 MF2_NOTELEPORT -translucency 0.66 - -$ MT_SORCFX3 -spawnstate S_SORCFX3_1 -seesound SorcererBishopSpawn -deathstate S_BISHMORPH1 -speed 15 -radius 22 -height 65 -flags MF_NOBLOCKMAP|MF_MISSILE -flags2 MF2_NOTELEPORT - -$ MT_SORCFX3_EXPLOSION -spawnstate S_SORCFX3_EXP1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -flags2 MF2_NOTELEPORT -translucency 0.66 - -$ MT_SORCFX4 -spawnstate S_SORCFX4_1 -deathstate S_SORCFX4_D1 -deathsound SorcererBallExplode -speed 12 -radius 10 -height 10 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_SORCSPARK1 -spawnstate S_SORCSPARK1 -radius 5 -height 5 -flags MF_NOBLOCKMAP|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_LOGRAV - -S_SORC_SPAWN1 SORC A 3 NULL S_SORC_SPAWN2 -S_SORC_SPAWN2 SORC A 2 A_SorcSpinBalls S_SORC_LOOK1 -S_SORC_LOOK1 SORC A 10 A_Look S_SORC_LOOK1 - -S_SORC_WALK1 SORC A 5 A_Chase S_SORC_WALK2 -S_SORC_WALK2 SORC B 5 A_Chase S_SORC_WALK3 -S_SORC_WALK3 SORC C 5 A_Chase S_SORC_WALK4 -S_SORC_WALK4 SORC D 5 A_Chase S_SORC_WALK1 - -S_SORC_PAIN1 SORC G 8 NULL S_SORC_PAIN2 -S_SORC_PAIN2 SORC G 8 A_Pain S_SORC_WALK1 - -S_SORC_ATK2_1 SORC F* 6 A_FaceTarget S_SORC_ATK2_2 -S_SORC_ATK2_2 SORC F* 6 A_SpeedBalls S_SORC_ATK2_3 -S_SORC_ATK2_3 SORC F* 6 A_FaceTarget S_SORC_ATK2_3 - -S_SORC_ATTACK1 SORC E* 6 NULL S_SORC_ATTACK2 -S_SORC_ATTACK2 SORC E* 6 A_SpawnFizzle S_SORC_ATTACK3 -S_SORC_ATTACK3 SORC E* 5 A_FaceTarget S_SORC_ATTACK2 -S_SORC_ATTACK4 SORC E* 2 NULL S_SORC_ATTACK5 -S_SORC_ATTACK5 SORC E* 2 A_SorcBossAttack S_SORC_WALK1 - -S_SORC_DIE1 SORC H* 5 NULL S_SORC_DIE2 -S_SORC_DIE2 SORC I* 5 A_FaceTarget S_SORC_DIE3 -S_SORC_DIE3 SORC J* 5 A_Scream S_SORC_DIE4 -S_SORC_DIE4 SORC K* 5 NULL S_SORC_DIE5 -S_SORC_DIE5 SORC L* 5 NULL S_SORC_DIE6 -S_SORC_DIE6 SORC M* 5 NULL S_SORC_DIE7 -S_SORC_DIE7 SORC N* 5 NULL S_SORC_DIE8 -S_SORC_DIE8 SORC O* 5 NULL S_SORC_DIE9 -S_SORC_DIE9 SORC P* 5 NULL S_SORC_DIE0 -S_SORC_DIE0 SORC Q* 5 NULL S_SORC_DIEA -S_SORC_DIEA SORC R* 5 NULL S_SORC_DIEB -S_SORC_DIEB SORC S* 5 NULL S_SORC_DIEC -S_SORC_DIEC SORC T* 5 NULL S_SORC_DIED -S_SORC_DIED SORC U* 5 A_NoBlocking S_SORC_DIEE -S_SORC_DIEE SORC V* 5 NULL S_SORC_DIEF -S_SORC_DIEF SORC W* 5 NULL S_SORC_DIEG -S_SORC_DIEG SORC X* 5 NULL S_SORC_DIEH -S_SORC_DIEH SORC Y* 5 NULL S_SORC_DIEI -S_SORC_DIEI SORC Z* -1 NULL S_NULL - -S_SORCBALL1_1 SBMP A 2 A_SorcBallOrbit S_SORCBALL1_2 -S_SORCBALL1_2 SBMP B 2 A_SorcBallOrbit S_SORCBALL1_3 -S_SORCBALL1_3 SBMP C 2 A_SorcBallOrbit S_SORCBALL1_4 -S_SORCBALL1_4 SBMP D 2 A_SorcBallOrbit S_SORCBALL1_5 -S_SORCBALL1_5 SBMP E 2 A_SorcBallOrbit S_SORCBALL1_6 -S_SORCBALL1_6 SBMP F 2 A_SorcBallOrbit S_SORCBALL1_7 -S_SORCBALL1_7 SBMP G 2 A_SorcBallOrbit S_SORCBALL1_8 -S_SORCBALL1_8 SBMP H 2 A_SorcBallOrbit S_SORCBALL1_9 -S_SORCBALL1_9 SBMP I 2 A_SorcBallOrbit S_SORCBALL1_0 -S_SORCBALL1_0 SBMP J 2 A_SorcBallOrbit S_SORCBALL1_A -S_SORCBALL1_A SBMP K 2 A_SorcBallOrbit S_SORCBALL1_B -S_SORCBALL1_B SBMP L 2 A_SorcBallOrbit S_SORCBALL1_C -S_SORCBALL1_C SBMP M 2 A_SorcBallOrbit S_SORCBALL1_D -S_SORCBALL1_D SBMP N 2 A_SorcBallOrbit S_SORCBALL1_E -S_SORCBALL1_E SBMP O 2 A_SorcBallOrbit S_SORCBALL1_F -S_SORCBALL1_F SBMP P 2 A_SorcBallOrbit S_SORCBALL1_1 - -S_SORCBALL1_D1 SBMP A 5 A_SorcBallPop S_SORCBALL1_D2 -S_SORCBALL1_D2 SBMP B 2 A_BounceCheck S_SORCBALL1_D2 -S_SORCBALL1_D5 SBS4 D 5 A_Explode S_SORCBALL1_D6 -S_SORCBALL1_D6 SBS4 E 5 NULL S_SORCBALL1_D7 -S_SORCBALL1_D7 SBS4 F 6 NULL S_SORCBALL1_D8 -S_SORCBALL1_D8 SBS4 G 6 NULL S_SORCBALL1_D9 -S_SORCBALL1_D9 SBS4 H 6 NULL S_NULL - -S_SORCBALL2_1 SBMB A 2 A_SorcBallOrbit S_SORCBALL2_2 -S_SORCBALL2_2 SBMB B 2 A_SorcBallOrbit S_SORCBALL2_3 -S_SORCBALL2_3 SBMB C 2 A_SorcBallOrbit S_SORCBALL2_4 -S_SORCBALL2_4 SBMB D 2 A_SorcBallOrbit S_SORCBALL2_5 -S_SORCBALL2_5 SBMB E 2 A_SorcBallOrbit S_SORCBALL2_6 -S_SORCBALL2_6 SBMB F 2 A_SorcBallOrbit S_SORCBALL2_7 -S_SORCBALL2_7 SBMB G 2 A_SorcBallOrbit S_SORCBALL2_8 -S_SORCBALL2_8 SBMB H 2 A_SorcBallOrbit S_SORCBALL2_9 -S_SORCBALL2_9 SBMB I 2 A_SorcBallOrbit S_SORCBALL2_0 -S_SORCBALL2_0 SBMB J 2 A_SorcBallOrbit S_SORCBALL2_A -S_SORCBALL2_A SBMB K 2 A_SorcBallOrbit S_SORCBALL2_B -S_SORCBALL2_B SBMB L 2 A_SorcBallOrbit S_SORCBALL2_C -S_SORCBALL2_C SBMB M 2 A_SorcBallOrbit S_SORCBALL2_D -S_SORCBALL2_D SBMB N 2 A_SorcBallOrbit S_SORCBALL2_E -S_SORCBALL2_E SBMB O 2 A_SorcBallOrbit S_SORCBALL2_F -S_SORCBALL2_F SBMB P 2 A_SorcBallOrbit S_SORCBALL2_1 -S_SORCBALL2_D1 SBMB A 5 A_SorcBallPop S_SORCBALL2_D2 -S_SORCBALL2_D2 SBMB B 2 A_BounceCheck S_SORCBALL2_D2 -S_SORCBALL2_D5 SBS3 D 5 A_Explode S_SORCBALL2_D6 -S_SORCBALL2_D6 SBS3 E 5 NULL S_SORCBALL2_D7 -S_SORCBALL2_D7 SBS3 F 6 NULL S_SORCBALL2_D8 -S_SORCBALL2_D8 SBS3 G 6 NULL S_SORCBALL2_D9 -S_SORCBALL2_D9 SBS3 H 6 NULL S_NULL - -S_SORCBALL3_1 SBMG A 2 A_SorcBallOrbit S_SORCBALL3_2 -S_SORCBALL3_2 SBMG B 2 A_SorcBallOrbit S_SORCBALL3_3 -S_SORCBALL3_3 SBMG C 2 A_SorcBallOrbit S_SORCBALL3_4 -S_SORCBALL3_4 SBMG D 2 A_SorcBallOrbit S_SORCBALL3_5 -S_SORCBALL3_5 SBMG E 2 A_SorcBallOrbit S_SORCBALL3_6 -S_SORCBALL3_6 SBMG F 2 A_SorcBallOrbit S_SORCBALL3_7 -S_SORCBALL3_7 SBMG G 2 A_SorcBallOrbit S_SORCBALL3_8 -S_SORCBALL3_8 SBMG H 2 A_SorcBallOrbit S_SORCBALL3_9 -S_SORCBALL3_9 SBMG I 2 A_SorcBallOrbit S_SORCBALL3_0 -S_SORCBALL3_0 SBMG J 2 A_SorcBallOrbit S_SORCBALL3_A -S_SORCBALL3_A SBMG K 2 A_SorcBallOrbit S_SORCBALL3_B -S_SORCBALL3_B SBMG L 2 A_SorcBallOrbit S_SORCBALL3_C -S_SORCBALL3_C SBMG M 2 A_SorcBallOrbit S_SORCBALL3_D -S_SORCBALL3_D SBMG N 2 A_SorcBallOrbit S_SORCBALL3_E -S_SORCBALL3_E SBMG O 2 A_SorcBallOrbit S_SORCBALL3_F -S_SORCBALL3_F SBMG P 2 A_SorcBallOrbit S_SORCBALL3_1 -S_SORCBALL3_D1 SBMG A 5 A_SorcBallPop S_SORCBALL3_D2 -S_SORCBALL3_D2 SBMG B 2 A_BounceCheck S_SORCBALL3_D2 -S_SORCBALL3_D5 SBS3 D 5 A_Explode S_SORCBALL3_D6 -S_SORCBALL3_D6 SBS3 E 5 NULL S_SORCBALL3_D7 -S_SORCBALL3_D7 SBS3 F 6 NULL S_SORCBALL3_D8 -S_SORCBALL3_D8 SBS3 G 6 NULL S_SORCBALL3_D9 -S_SORCBALL3_D9 SBS3 H 6 NULL S_NULL - -S_SORCFX1_1 SBS1 A* 2 NULL S_SORCFX1_2 -S_SORCFX1_2 SBS1 B* 3 A_SorcFX1Seek S_SORCFX1_3 -S_SORCFX1_3 SBS1 C* 3 A_SorcFX1Seek S_SORCFX1_4 -S_SORCFX1_4 SBS1 D* 3 A_SorcFX1Seek S_SORCFX1_1 -S_SORCFX1_D1 FHFX S* 2 A_Explode S_SORCFX1_D2 -S_SORCFX1_D2 FHFX S* 6 NULL S_SORCFX1_D3 -S_SORCFX1_D3 FHFX S* 6 NULL S_NULL - -S_SORCFX2_SPLIT1 SBS2 A* 3 A_SorcFX2Split S_SORCFX2_SPLIT1 - -S_SORCFX2_ORBIT1 SBS2 A* 2 A_SorcFX2Orbit S_SORCFX2_ORBIT2 -S_SORCFX2_ORBIT2 SBS2 B* 2 A_SorcFX2Orbit S_SORCFX2_ORBIT3 -S_SORCFX2_ORBIT3 SBS2 C* 2 A_SorcFX2Orbit S_SORCFX2_ORBIT4 -S_SORCFX2_ORBIT4 SBS2 D* 2 A_SorcFX2Orbit S_SORCFX2_ORBIT5 -S_SORCFX2_ORBIT5 SBS2 E* 2 A_SorcFX2Orbit S_SORCFX2_ORBIT6 -S_SORCFX2_ORBIT6 SBS2 F* 2 A_SorcFX2Orbit S_SORCFX2_ORBIT7 -S_SORCFX2_ORBIT7 SBS2 G* 2 A_SorcFX2Orbit S_SORCFX2_ORBIT8 -S_SORCFX2_ORBIT8 SBS2 H* 2 A_SorcFX2Orbit S_SORCFX2_ORBIT9 -S_SORCFX2_ORBIT9 SBS2 I* 2 A_SorcFX2Orbit S_SORCFX2_ORBIT0 -S_SORCFX2_ORBIT0 SBS2 J* 2 A_SorcFX2Orbit S_SORCFX2_ORBITA -S_SORCFX2_ORBITA SBS2 K* 2 A_SorcFX2Orbit S_SORCFX2_ORBITB -S_SORCFX2_ORBITB SBS2 L* 2 A_SorcFX2Orbit S_SORCFX2_ORBITC -S_SORCFX2_ORBITC SBS2 M* 2 A_SorcFX2Orbit S_SORCFX2_ORBITD -S_SORCFX2_ORBITD SBS2 N* 2 A_SorcFX2Orbit S_SORCFX2_ORBITE -S_SORCFX2_ORBITE SBS2 O* 2 A_SorcFX2Orbit S_SORCFX2_ORBITF -S_SORCFX2_ORBITF SBS2 P* 2 A_SorcFX2Orbit S_SORCFX2_ORBIT1 -S_SORCFX2T1 SBS2 A 10 NULL S_NULL - -S_SORCFX3_1 SBS3 A* 2 NULL S_SORCFX3_2 -S_SORCFX3_2 SBS3 B* 2 NULL S_SORCFX3_3 -S_SORCFX3_3 SBS3 C* 2 NULL S_SORCFX3_1 - -S_BISHMORPH1 SBS3 A* 4 NULL S_BISHMORPHA -S_BISHMORPHA BISH P 4 A_SorcererBishopEntry S_BISHMORPHB -S_BISHMORPHB BISH O 4 NULL S_BISHMORPHC -S_BISHMORPHC BISH N 4 NULL S_BISHMORPHD -S_BISHMORPHD BISH M 3 NULL S_BISHMORPHE -S_BISHMORPHE BISH L 3 NULL S_BISHMORPHF -S_BISHMORPHF BISH K 3 NULL S_BISHMORPHG -S_BISHMORPHG BISH J 3 NULL S_BISHMORPHH -S_BISHMORPHH BISH I 3 NULL S_BISHMORPHI -S_BISHMORPHI BISH H 3 NULL S_BISHMORPHJ -S_BISHMORPHJ BISH G 3 A_SpawnBishop S_NULL -S_SORCFX3_EXP1 SBS3 D 3 NULL S_SORCFX3_EXP2 -S_SORCFX3_EXP2 SBS3 E 3 NULL S_SORCFX3_EXP3 -S_SORCFX3_EXP3 SBS3 F 3 NULL S_SORCFX3_EXP4 -S_SORCFX3_EXP4 SBS3 G 3 NULL S_SORCFX3_EXP5 -S_SORCFX3_EXP5 SBS3 H 3 NULL S_NULL -S_SORCFX4_1 SBS4 A* 2 A_SorcFX4Check S_SORCFX4_2 -S_SORCFX4_2 SBS4 B* 2 A_SorcFX4Check S_SORCFX4_3 -S_SORCFX4_3 SBS4 C* 2 A_SorcFX4Check S_SORCFX4_1 -S_SORCFX4_D1 SBS4 D* 2 NULL S_SORCFX4_D2 -S_SORCFX4_D2 SBS4 E* 2 A_Explode S_SORCFX4_D3 -S_SORCFX4_D3 SBS4 F* 2 NULL S_SORCFX4_D4 -S_SORCFX4_D4 SBS4 G* 2 NULL S_SORCFX4_D5 -S_SORCFX4_D5 SBS4 H* 2 NULL S_NULL -S_SORCSPARK1 SBFX A* 4 NULL S_SORCSPARK2 -S_SORCSPARK2 SBFX B* 4 NULL S_SORCSPARK3 -S_SORCSPARK3 SBFX C* 4 NULL S_SORCSPARK4 -S_SORCSPARK4 SBFX D* 4 NULL S_SORCSPARK5 -S_SORCSPARK5 SBFX E* 4 NULL S_SORCSPARK6 -S_SORCSPARK6 SBFX F* 4 NULL S_SORCSPARK7 -S_SORCSPARK7 SBFX G* 4 NULL S_NULL - - -// -// blast effect -// - -$ MT_BLASTEFFECT -spawnstate S_BLASTEFFECT1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP -flags2 MF2_NOTELEPORT -translucency 0.66 - -S_BLASTEFFECT1 RADE A 4 NULL S_BLASTEFFECT2 -S_BLASTEFFECT2 RADE B 4 NULL S_BLASTEFFECT3 -S_BLASTEFFECT3 RADE C 4 NULL S_BLASTEFFECT4 -S_BLASTEFFECT4 RADE D 4 NULL S_BLASTEFFECT5 -S_BLASTEFFECT5 RADE E 4 NULL S_BLASTEFFECT6 -S_BLASTEFFECT6 RADE F 4 NULL S_BLASTEFFECT7 -S_BLASTEFFECT7 RADE G 4 NULL S_BLASTEFFECT8 -S_BLASTEFFECT8 RADE H 4 NULL S_BLASTEFFECT9 -S_BLASTEFFECT9 RADE I 4 NULL S_NULL - -// -// dripping water -// - -$ MT_WATER_DRIP -spawnstate S_WATERDRIP1 -deathsound Drip -mass 1 -flags MF_MISSILE -flags2 MF2_LOGRAV|MF2_NOTELEPORT - -S_WATERDRIP1 WATR A 5 NULL S_WATERDRIP1 - - -// -// KORAX! -// - -$ MT_KORAX -doomednum 10200 -spawnstate S_KORAX_LOOK1 -spawnhealth 5000 -seestate S_KORAX_CHASE2 -seesound KoraxSight -attacksound KoraxAttack -painstate S_KORAX_PAIN1 -painchance 20 -painsound KoraxPain -missilestate S_KORAX_ATTACK1 -deathstate S_KORAX_DEATH1 -deathsound KoraxDeath -speed 10 -radius 65 -height 115 -damage 15 -mass 2000 -activesound KoraxActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FLOORCLIP|MF2_PUSHWALL|MF2_MCROSS|MF2_TELESTOMP|MF2_BOSS - -$ MT_KORAX_SPIRIT1 -spawnstate S_KSPIRIT_ROAM1 -speed 8 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_NOGRAVITY|MF_MISSILE|MF_NOCLIP -flags2 MF2_NOTELEPORT -translucency 0.66 - -$ MT_KORAX_SPIRIT2 -spawnstate S_KSPIRIT_ROAM1 -speed 8 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_NOGRAVITY|MF_MISSILE|MF_NOCLIP -flags2 MF2_NOTELEPORT -translucency 0.66 - -$ MT_KORAX_SPIRIT3 -spawnstate S_KSPIRIT_ROAM1 -speed 8 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_NOGRAVITY|MF_MISSILE|MF_NOCLIP -flags2 MF2_NOTELEPORT -translucency 0.66 - -$ MT_KORAX_SPIRIT4 -spawnstate S_KSPIRIT_ROAM1 -speed 8 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_NOGRAVITY|MF_MISSILE|MF_NOCLIP -flags2 MF2_NOTELEPORT -translucency 0.66 - -$ MT_KORAX_SPIRIT5 -spawnstate S_KSPIRIT_ROAM1 -speed 8 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_NOGRAVITY|MF_MISSILE|MF_NOCLIP -flags2 MF2_NOTELEPORT -translucency 0.66 - -$ MT_KORAX_SPIRIT6 -spawnstate S_KSPIRIT_ROAM1 -speed 8 -flags MF_NOBLOCKMAP|MF_DROPOFF|MF_NOGRAVITY|MF_MISSILE|MF_NOCLIP -flags2 MF2_NOTELEPORT -translucency 0.66 - -$ MT_KORAX_BOLT -spawnstate S_KBOLT1 -radius 15 -height 35 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE|MF_DROPOFF -flags2 MF2_NOTELEPORT - -S_KORAX_LOOK1 KORX A 5 A_Look S_KORAX_LOOK1 - -S_KORAX_CHASE1 KORX A 3 A_KoraxStep2 S_KORAX_CHASE2 -S_KORAX_CHASE2 KORX A 3 A_KoraxChase S_KORAX_CHASE3 -S_KORAX_CHASE3 KORX A 3 A_KoraxChase S_KORAX_CHASE4 -S_KORAX_CHASE4 KORX A 3 A_KoraxChase S_KORAX_CHASE5 -S_KORAX_CHASE5 KORX B 3 A_KoraxStep S_KORAX_CHASE6 -S_KORAX_CHASE6 KORX B 3 A_KoraxChase S_KORAX_CHASE7 -S_KORAX_CHASE7 KORX B 3 A_KoraxChase S_KORAX_CHASE8 -S_KORAX_CHASE8 KORX B 3 A_KoraxChase S_KORAX_CHASE9 -S_KORAX_CHASE9 KORX C 3 A_KoraxStep2 S_KORAX_CHASE0 -S_KORAX_CHASE0 KORX C 3 A_KoraxChase S_KORAX_CHASEA -S_KORAX_CHASEA KORX C 3 A_KoraxChase S_KORAX_CHASEB -S_KORAX_CHASEB KORX C 3 A_KoraxChase S_KORAX_CHASEC -S_KORAX_CHASEC KORX D 3 A_KoraxStep S_KORAX_CHASED -S_KORAX_CHASED KORX D 3 A_KoraxChase S_KORAX_CHASEE -S_KORAX_CHASEE KORX D 3 A_KoraxChase S_KORAX_CHASEF -S_KORAX_CHASEF KORX D 3 A_KoraxChase S_KORAX_CHASE1 - -S_KORAX_PAIN1 KORX H 5 A_Pain S_KORAX_PAIN2 -S_KORAX_PAIN2 KORX H 5 NULL S_KORAX_CHASE2 - -S_KORAX_ATTACK1 KORX E* 2 A_FaceTarget S_KORAX_ATTACK2 -S_KORAX_ATTACK2 KORX E* 5 A_KoraxDecide S_KORAX_ATTACK2 - -S_KORAX_MISSILE1 KORX E* 4 A_FaceTarget S_KORAX_MISSILE2 -S_KORAX_MISSILE2 KORX F* 8 A_KoraxMissile S_KORAX_MISSILE3 -S_KORAX_MISSILE3 KORX E* 8 NULL S_KORAX_CHASE2 - -S_KORAX_COMMAND1 KORX E* 5 A_FaceTarget S_KORAX_COMMAND2 -S_KORAX_COMMAND2 KORX W* 10 A_FaceTarget S_KORAX_COMMAND3 -S_KORAX_COMMAND3 KORX G* 15 A_KoraxCommand S_KORAX_COMMAND4 -S_KORAX_COMMAND4 KORX W* 10 NULL S_KORAX_COMMAND5 -S_KORAX_COMMAND5 KORX E* 5 NULL S_KORAX_CHASE2 - -S_KORAX_DEATH1 KORX I 5 NULL S_KORAX_DEATH2 -S_KORAX_DEATH2 KORX J 5 A_FaceTarget S_KORAX_DEATH3 -S_KORAX_DEATH3 KORX K 5 A_Scream S_KORAX_DEATH4 -S_KORAX_DEATH4 KORX L 5 NULL S_KORAX_DEATH5 -S_KORAX_DEATH5 KORX M 5 NULL S_KORAX_DEATH6 -S_KORAX_DEATH6 KORX N 5 NULL S_KORAX_DEATH7 -S_KORAX_DEATH7 KORX O 5 NULL S_KORAX_DEATH8 -S_KORAX_DEATH8 KORX P 5 NULL S_KORAX_DEATH9 -S_KORAX_DEATH9 KORX Q 10 NULL S_KORAX_DEATH0 -S_KORAX_DEATH0 KORX R 5 A_KoraxBonePop S_KORAX_DEATHA -S_KORAX_DEATHA KORX S 5 A_NoBlocking S_KORAX_DEATHB -S_KORAX_DEATHB KORX T 5 NULL S_KORAX_DEATHC -S_KORAX_DEATHC KORX U 5 NULL S_KORAX_DEATHD -S_KORAX_DEATHD KORX V -1 NULL S_NULL - -S_KSPIRIT_ROAM1 SPIR A 5 A_KSpiritRoam S_KSPIRIT_ROAM2 -S_KSPIRIT_ROAM2 SPIR B 5 A_KSpiritRoam S_KSPIRIT_ROAM1 - -S_KSPIRIT_DEATH1 SPIR D 5 NULL S_KSPIRIT_DEATH2 -S_KSPIRIT_DEATH2 SPIR E 5 NULL S_KSPIRIT_DEATH3 -S_KSPIRIT_DEATH3 SPIR F 5 NULL S_KSPIRIT_DEATH4 -S_KSPIRIT_DEATH4 SPIR G 5 NULL S_KSPIRIT_DEATH5 -S_KSPIRIT_DEATH5 SPIR H 5 NULL S_KSPIRIT_DEATH6 -S_KSPIRIT_DEATH6 SPIR I 5 NULL S_NULL - -S_KBOLT1 MLFX I* 2 NULL S_KBOLT2 -S_KBOLT2 MLFX J* 2 A_KBoltRaise S_KBOLT3 -S_KBOLT3 MLFX I* 2 A_KBolt S_KBOLT4 -S_KBOLT4 MLFX J* 2 A_KBolt S_KBOLT5 -S_KBOLT5 MLFX K* 2 A_KBolt S_KBOLT6 -S_KBOLT6 MLFX L* 2 A_KBolt S_KBOLT7 -S_KBOLT7 MLFX M* 2 A_KBolt S_KBOLT3 - - -// -// some mash monsters (what does the mash mean?) -// - -$ MT_DEMON_MASH -spawnstate S_DEMN_LOOK1 -spawnhealth 250 -seestate S_DEMN_CHASE1 -seesound DemonSight -attacksound DemonAttack -painstate S_DEMN_PAIN1 -painchance 50 -painsound DemonPain -meleestate S_DEMN_ATK1_1 -missilestate S_DEMN_ATK2_1 -deathsound DemonDeath -speed 13 -radius 32 -height 64 -mass 220 -activesound DemonActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_NOBLOOD -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_MCROSS|MF2_PUSHWALL|MF2_BLASTED -translucency 0.66 - -$ MT_DEMON2_MASH -spawnstate S_DEMN2_LOOK1 -spawnhealth 250 -seestate S_DEMN2_CHASE1 -seesound DemonSight -attacksound DemonAttack -painstate S_DEMN2_PAIN1 -painchance 50 -painsound DemonPain -meleestate S_DEMN2_ATK1_1 -missilestate S_DEMN2_ATK2_1 -deathsound DemonDeath -speed 13 -radius 32 -height 64 -mass 220 -activesound DemonActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_NOBLOOD -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_MCROSS|MF2_PUSHWALL|MF2_BLASTED -translucency 0.66 - -$ MT_ETTIN_MASH -spawnstate S_ETTIN_LOOK1 -spawnhealth 175 -seestate S_ETTIN_CHASE1 -seesound EttinSight -attacksound EttinAttack -painstate S_ETTIN_PAIN1 -painchance 60 -painsound EttinPain -meleestate S_ETTIN_ATK1_1 -deathsound EttinDeath -speed 13 -radius 25 -height 68 -damage 3 -mass 175 -activesound EttinActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_NOBLOOD -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_MCROSS|MF2_PUSHWALL|MF2_BLASTED -translucency 0.66 - -$ MT_CENTAUR_MASH -spawnstate S_CENTAUR_LOOK1 -spawnhealth 200 -seestate S_CENTAUR_WALK1 -seesound CentaurSight -attacksound CentaurAttack -painstate S_CENTAUR_PAIN1 -painchance 135 -painsound CentaurPain -meleestate S_CENTAUR_ATK1 -missilestate 0 -deathsound CentaurDeath -speed 13 -height 64 -mass 120 -activesound CentaurActive -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_NOBLOOD -flags2 MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_MCROSS|MF2_PUSHWALL|MF2_BLASTED -translucency 0.66 - - -// -// bats -// - -$ MT_BAT_SPAWNER -doomednum 10225 -spawnstate S_SPAWNBATS1 -flags MF_NOBLOCKMAP|MF_NOSECTOR|MF_NOGRAVITY -flags2 MF2_DONTDRAW - -$ MT_BAT -spawnstate S_BAT1 -deathstate S_BAT_DEATH -speed 5 -radius 3 -height 3 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE -flags2 MF2_PASSMOBJ|MF2_NOTELEPORT - -S_SPAWNBATS1 MAN1 A 2 NULL S_SPAWNBATS2 -S_SPAWNBATS2 MAN1 A 2 A_BatSpawnInit S_SPAWNBATS3 -S_SPAWNBATS3 MAN1 A 2 A_BatSpawn S_SPAWNBATS3 - -S_SPAWNBATS_OFF MAN1 A -1 NULL S_NULL - -S_BAT1 ABAT A 2 A_BatMove S_BAT2 -S_BAT2 ABAT B 2 A_BatMove S_BAT3 -S_BAT3 ABAT C 2 A_BatMove S_BAT1 - -S_BAT_DEATH ABAT A 2 NULL S_NULL diff --git a/code/p_acs.c b/code/p_acs.c index caef6e10d7..519fbd38de 100644 --- a/code/p_acs.c +++ b/code/p_acs.c @@ -965,8 +965,9 @@ static BOOL P_GetScriptGoing (mobj_t *who, line_t *where, int num, int *code, if (delay) { // From Hexen: Give the world some time to set itself up before // running open scripts. - script->state = delayed; - script->statedata = TICRATE; + //script->state = delayed; + //script->statedata = TICRATE; + script->state = running; } else { script->state = running; } diff --git a/code/r_drawt.c b/code/r_drawt.c index c87a197def..1e9d5b7bb9 100644 --- a/code/r_drawt.c +++ b/code/r_drawt.c @@ -369,8 +369,8 @@ void rt_lucent1col (int hx, int sx, int yl, int yh) fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - *dest = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + *dest = RGB32k[0][0][fg & (fg>>15)]; source += 4; dest += pitch; } while (--count); @@ -410,15 +410,15 @@ void rt_lucent2cols (int hx, int sx, int yl, int yh) unsigned int bg = dest[0]; fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - dest[0] = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + dest[0] = RGB32k[0][0][fg & (fg>>15)]; fg = colormap[source[1]]; bg = dest[1]; fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - dest[1] = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + dest[1] = RGB32k[0][0][fg & (fg>>15)]; source += 4; dest += pitch; @@ -459,30 +459,30 @@ void rt_lucent4cols (int sx, int yl, int yh) unsigned int bg = dest[0]; fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - dest[0] = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + dest[0] = RGB32k[0][0][fg & (fg>>15)]; fg = colormap[source[1]]; bg = dest[1]; fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - dest[1] = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + dest[1] = RGB32k[0][0][fg & (fg>>15)]; fg = colormap[source[2]]; bg = dest[2]; fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - dest[2] = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + dest[2] = RGB32k[0][0][fg & (fg>>15)]; fg = colormap[source[3]]; bg = dest[3]; fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - dest[3] = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + dest[3] = RGB32k[0][0][fg & (fg>>15)]; source += 4; dest += pitch; @@ -526,8 +526,8 @@ void rt_tlatelucent1col (int hx, int sx, int yl, int yh) fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - *dest = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + *dest = RGB32k[0][0][fg & (fg>>15)]; source += 4; dest += pitch; } while (--count); @@ -569,15 +569,15 @@ void rt_tlatelucent2cols (int hx, int sx, int yl, int yh) unsigned int bg = dest[0]; fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - dest[0] = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + dest[0] = RGB32k[0][0][fg & (fg>>15)]; fg = colormap[translation[source[1]]]; bg = dest[1]; fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - dest[1] = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + dest[1] = RGB32k[0][0][fg & (fg>>15)]; source += 4; dest += pitch; @@ -620,30 +620,30 @@ void rt_tlatelucent4cols (int sx, int yl, int yh) unsigned int bg = dest[0]; fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - dest[0] = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + dest[0] = RGB32k[0][0][fg & (fg>>15)]; fg = colormap[translation[source[1]]]; bg = dest[1]; fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - dest[1] = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + dest[1] = RGB32k[0][0][fg & (fg>>15)]; fg = colormap[translation[source[2]]]; bg = dest[2]; fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - dest[2] = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + dest[2] = RGB32k[0][0][fg & (fg>>15)]; fg = colormap[translation[source[3]]]; bg = dest[3]; fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - dest[3] = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + dest[3] = RGB32k[0][0][fg & (fg>>15)]; source += 4; dest += pitch; diff --git a/code/ticinfo.lmp b/code/ticinfo.lmp deleted file mode 100644 index a6e96a66de..0000000000 --- a/code/ticinfo.lmp +++ /dev/null @@ -1,3173 +0,0 @@ -// This file describes the state definitions and info declarations used for -// Heretic. The format of this file is based on the format used by the -// original multigen with modifications to suit the way things are done -// internally by ZDoom. -// -//============================================================================ -// If the first two characters of a line are S_, it is a state definition -// line. Otherwise, it is part of an info declaration. -// -//============================================================================ -// state data is: -// -// statename sprite frame tics action nextstate [optional1] [optional2] -// a * after the frame letter causes full bright -// -//============================================================================ -// An info definition is: -// -// $ MOBJNAME -// field data -// -// if MOBJNAME is +, a new unique name will be generated -// if fieldname starts with str_, it will be made a char * instead of an int -//============================================================================ - -// -// info default MUST be first in file -// - -$ DEFAULT -doomednum -1 //number to spawn this object -spawnstate S_NULL // -spawnhealth 1000 // -seestate S_NULL //when player sighted or enemy shot -seesound "" //also launch sound for missiles -reactiontime 8 //wait time before attacking -attacksound "" // -painstate S_NULL // -painchance 0 //out of 256 -painsound "" // -meleestate S_NULL // -missilestate S_NULL // -crashstate S_NULL // -deathstate S_NULL //also explodestate for missiles -xdeathstate S_NULL //when knocked to -spawnhelath or lower -deathsound "" //also explosion sound for missiles -speed 0 // -radius 20 // -height 16 // -mass 100 // -damage 0 //missile damage in d8s -activesound "" // -flags 0 // -flags2 0 //Heretic/Hexen flags -raisestate S_NULL //vile resurection state -translucency 1 //0=invisible, 1=opaque - - -// when a state cycles to S_NULL, the actor will be removed - -S_NULL IMPX A -1 NULL S_NULL -S_FREETARGMOBJ ACLO E 1050 A_FreeTargMobj S_NULL - -// -// Items -// - -// healing vial -$ + -doomednum 81 -spawnstate S_ITEM_PTN1_1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ITEM_PTN1_1 PTN1 A 3 NULL S_ITEM_PTN1_2 -S_ITEM_PTN1_2 PTN1 B 3 NULL S_ITEM_PTN1_3 -S_ITEM_PTN1_3 PTN1 C 3 NULL S_ITEM_PTN1_1 - -// shields -$ MT_ITEMSHIELD1 -doomednum 85 -spawnstate S_ITEM_SHLD1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -$ MT_ITEMSHIELD2 -doomednum 31 -spawnstate S_ITEM_SHD2_1 -flags MF_SPECIAL -flags2 MF2_FLOATBOB - -S_ITEM_SHLD1 SHLD A -1 NULL S_NULL - -S_ITEM_SHD2_1 SHD2 A -1 NULL S_NULL - -// bag of holding -$ + -doomednum 8 -spawnstate S_ITEM_BAGH1 -flags MF_SPECIAL|MF_COUNTITEM -flags2 MF2_FLOATBOB - -S_ITEM_BAGH1 BAGH A -1 NULL S_NULL - -// super map -$ + -doomednum 35 -spawnstate S_ITEM_SPMP1 -flags MF_SPECIAL|MF_COUNTITEM -flags2 MF2_FLOATBOB - -S_ITEM_SPMP1 SPMP A -1 NULL S_NULL - -// -// hiding/removing items -// -S_HIDESPECIAL1 ACLO E 1400 NULL S_HIDESPECIAL2 -S_HIDESPECIAL2 ACLO A 4 A_RestoreSpecialThing1 S_HIDESPECIAL3 -S_HIDESPECIAL3 ACLO B 4 NULL S_HIDESPECIAL4 -S_HIDESPECIAL4 ACLO A 4 NULL S_HIDESPECIAL5 -S_HIDESPECIAL5 ACLO B 4 NULL S_HIDESPECIAL6 -S_HIDESPECIAL6 ACLO C 4 NULL S_HIDESPECIAL7 -S_HIDESPECIAL7 ACLO B 4 NULL S_HIDESPECIAL8 -S_HIDESPECIAL8 ACLO C 4 NULL S_HIDESPECIAL9 -S_HIDESPECIAL9 ACLO D 4 NULL S_HIDESPECIAL10 -S_HIDESPECIAL10 ACLO C 4 NULL S_HIDESPECIAL11 -S_HIDESPECIAL11 ACLO D 4 A_RestoreSpecialThing2 S_NULL - -S_DORMANTARTI1 ACLO D 3 NULL S_DORMANTARTI2 -S_DORMANTARTI2 ACLO C 3 NULL S_DORMANTARTI3 -S_DORMANTARTI3 ACLO D 3 NULL S_DORMANTARTI4 -S_DORMANTARTI4 ACLO C 3 NULL S_DORMANTARTI5 -S_DORMANTARTI5 ACLO B 3 NULL S_DORMANTARTI6 -S_DORMANTARTI6 ACLO C 3 NULL S_DORMANTARTI7 -S_DORMANTARTI7 ACLO B 3 NULL S_DORMANTARTI8 -S_DORMANTARTI8 ACLO A 3 NULL S_DORMANTARTI9 -S_DORMANTARTI9 ACLO B 3 NULL S_DORMANTARTI10 -S_DORMANTARTI10 ACLO A 3 NULL S_DORMANTARTI11 -S_DORMANTARTI11 ACLO A 1400 A_HideThing S_DORMANTARTI12 -S_DORMANTARTI12 ACLO A 3 A_UnHideThing S_DORMANTARTI13 -S_DORMANTARTI13 ACLO B 3 NULL S_DORMANTARTI14 -S_DORMANTARTI14 ACLO A 3 NULL S_DORMANTARTI15 -S_DORMANTARTI15 ACLO B 3 NULL S_DORMANTARTI16 -S_DORMANTARTI16 ACLO C 3 NULL S_DORMANTARTI17 -S_DORMANTARTI17 ACLO B 3 NULL S_DORMANTARTI18 -S_DORMANTARTI18 ACLO C 3 NULL S_DORMANTARTI19 -S_DORMANTARTI19 ACLO D 3 NULL S_DORMANTARTI20 -S_DORMANTARTI20 ACLO C 3 NULL S_DORMANTARTI21 -S_DORMANTARTI21 ACLO D 3 A_RestoreArtifact S_NULL - -S_DEADARTI1 ACLO D 3 NULL S_DEADARTI2 -S_DEADARTI2 ACLO C 3 NULL S_DEADARTI3 -S_DEADARTI3 ACLO D 3 NULL S_DEADARTI4 -S_DEADARTI4 ACLO C 3 NULL S_DEADARTI5 -S_DEADARTI5 ACLO B 3 NULL S_DEADARTI6 -S_DEADARTI6 ACLO C 3 NULL S_DEADARTI7 -S_DEADARTI7 ACLO B 3 NULL S_DEADARTI8 -S_DEADARTI8 ACLO A 3 NULL S_DEADARTI9 -S_DEADARTI9 ACLO B 3 NULL S_DEADARTI10 -S_DEADARTI10 ACLO A 3 NULL S_NULL - -// -// more items -// - -// invisibility -$ MT_ARTIINVISIBILITY -doomednum 75 -spawnstate S_ARTI_INVS1 -flags MF_SPECIAL|MF_COUNTITEM -flags2 MF2_FLOATBOB -translucency 0.33 - -S_ARTI_INVS1 INVS A* 350 NULL S_ARTI_INVS1 - -// healing potion -$ + -doomednum 82 -spawnstate S_ARTI_PTN2_1 -flags MF_SPECIAL|MF_COUNTITEM -flags2 MF2_FLOATBOB - -S_ARTI_PTN2_1 PTN2 A 4 NULL S_ARTI_PTN2_2 -S_ARTI_PTN2_2 PTN2 B 4 NULL S_ARTI_PTN2_3 -S_ARTI_PTN2_3 PTN2 C 4 NULL S_ARTI_PTN2_1 - -// flight -$ MT_ARTIFLY -doomednum 83 -spawnstate S_ARTI_SOAR1 -flags MF_SPECIAL|MF_COUNTITEM -flags2 MF2_FLOATBOB - -S_ARTI_SOAR1 SOAR A 5 NULL S_ARTI_SOAR2 -S_ARTI_SOAR2 SOAR B 5 NULL S_ARTI_SOAR3 -S_ARTI_SOAR3 SOAR C 5 NULL S_ARTI_SOAR4 -S_ARTI_SOAR4 SOAR B 5 NULL S_ARTI_SOAR1 - -// invulnerability -$ MT_ARTIINVULNERABILITY -doomednum 84 -spawnstate S_ARTI_INVU1 -flags MF_SPECIAL|MF_COUNTITEM -flags2 MF2_FLOATBOB - -S_ARTI_INVU1 INVU A 3 NULL S_ARTI_INVU2 -S_ARTI_INVU2 INVU B 3 NULL S_ARTI_INVU3 -S_ARTI_INVU3 INVU C 3 NULL S_ARTI_INVU4 -S_ARTI_INVU4 INVU D 3 NULL S_ARTI_INVU1 - -// tome of power -$ MT_ARTITOMEOFPOWER -doomednum 86 -spawnstate S_ARTI_PWBK1 -flags MF_SPECIAL|MF_COUNTITEM -flags2 MF2_FLOATBOB - -S_ARTI_PWBK1 PWBK A 350 NULL S_ARTI_PWBK1 - -// morph ovum -$ MT_ARTIEGG -doomednum 30 -spawnstate S_ARTI_EGGC1 -flags MF_SPECIAL|MF_COUNTITEM -flags2 MF2_FLOATBOB - -$ MT_EGGFX -spawnstate S_EGGFX1 -seesound 0 -deathstate S_EGGFXI1_1 -deathsound 0 -speed 18 -radius 8 -height 8 -damage 1 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -S_ARTI_EGGC1 EGGC A 6 NULL S_ARTI_EGGC2 -S_ARTI_EGGC2 EGGC B 6 NULL S_ARTI_EGGC3 -S_ARTI_EGGC3 EGGC C 6 NULL S_ARTI_EGGC4 -S_ARTI_EGGC4 EGGC B 6 NULL S_ARTI_EGGC1 - -S_EGGFX1 EGGM A 4 NULL S_EGGFX2 -S_EGGFX2 EGGM B 4 NULL S_EGGFX3 -S_EGGFX3 EGGM C 4 NULL S_EGGFX4 -S_EGGFX4 EGGM D 4 NULL S_EGGFX5 -S_EGGFX5 EGGM E 4 NULL S_EGGFX1 - -S_EGGFXI1_1 FX01 E* 3 NULL S_EGGFXI1_2 -S_EGGFXI1_2 FX01 F* 3 NULL S_EGGFXI1_3 -S_EGGFXI1_3 FX01 G* 3 NULL S_EGGFXI1_4 -S_EGGFXI1_4 FX01 H* 3 NULL S_NULL - -// super health -$ MT_ARTISUPERHEAL -doomednum 32 -spawnstate S_ARTI_SPHL1 -flags MF_SPECIAL|MF_COUNTITEM -flags2 MF2_FLOATBOB - -S_ARTI_SPHL1 SPHL A 350 NULL S_ARTI_SPHL1 - -// torch -$ + -doomednum 33 -spawnstate S_ARTI_TRCH1 -flags MF_SPECIAL|MF_COUNTITEM -flags2 MF2_FLOATBOB - -S_ARTI_TRCH1 TRCH A* 3 NULL S_ARTI_TRCH2 -S_ARTI_TRCH2 TRCH B* 3 NULL S_ARTI_TRCH3 -S_ARTI_TRCH3 TRCH C* 3 NULL S_ARTI_TRCH1 - -// fire bomb -$ + -doomednum 34 -spawnstate S_ARTI_FBMB1 -flags MF_SPECIAL|MF_COUNTITEM -flags2 MF2_FLOATBOB - -$ MT_FIREBOMB -spawnstate S_FIREBOMB1 -deathsound sfx_phohit -flags MF_NOGRAVITY -translucency 0.33 - -S_ARTI_FBMB1 FBMB E 350 NULL S_ARTI_FBMB1 - -S_FIREBOMB1 FBMB A 10 NULL S_FIREBOMB2 -S_FIREBOMB2 FBMB B 10 NULL S_FIREBOMB3 -S_FIREBOMB3 FBMB C 10 NULL S_FIREBOMB4 -S_FIREBOMB4 FBMB D 10 NULL S_FIREBOMB5 -S_FIREBOMB5 FBMB E 6 A_Scream S_FIREBOMB6 -S_FIREBOMB6 XPL1 A* 4 A_Explode S_FIREBOMB7 -S_FIREBOMB7 XPL1 B* 4 NULL S_FIREBOMB8 -S_FIREBOMB8 XPL1 C* 4 NULL S_FIREBOMB9 -S_FIREBOMB9 XPL1 D* 4 NULL S_FIREBOMB10 -S_FIREBOMB10 XPL1 E* 4 NULL S_FIREBOMB11 -S_FIREBOMB11 XPL1 F* 4 NULL S_NULL - -// teleportation -$ MT_ARTITELEPORT -doomednum 36 -spawnstate S_ARTI_ATLP1 -flags MF_SPECIAL|MF_COUNTITEM -flags2 MF2_FLOATBOB - -S_ARTI_ATLP1 ATLP A 4 NULL S_ARTI_ATLP2 -S_ARTI_ATLP2 ATLP B 4 NULL S_ARTI_ATLP3 -S_ARTI_ATLP3 ATLP C 4 NULL S_ARTI_ATLP4 -S_ARTI_ATLP4 ATLP B 4 NULL S_ARTI_ATLP1 - - -// -// exploding pod -// - -$ MT_POD -doomednum 2035 -spawnstate S_POD_WAIT1 -spawnhealth 45 -painstate S_POD_PAIN1 -painchance 255 -deathstate S_POD_DIE1 -deathsound sfx_podexp -radius 16 -height 54 -flags MF_SOLID|MF_NOBLOOD|MF_SHOOTABLE|MF_DROPOFF -flags2 MF2_WINDTHRUST|MF2_PUSHABLE|MF2_SLIDE|MF2_PASSMOBJ|MF2_TELESTOMP - -$ MT_PODGOO -spawnstate S_PODGOO1 -deathstate S_PODGOOX -radius 2 -height 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH - -$ MT_PODGENERATOR -doomednum 43 -spawnstate S_PODGENERATOR -flags MF_NOBLOCKMAP|MF_NOSECTOR - -S_POD_WAIT1 PPOD A 10 NULL S_POD_WAIT1 -S_POD_PAIN1 PPOD B 14 A_PodPain S_POD_WAIT1 - -S_POD_DIE1 PPOD C* 5 A_RemovePod S_POD_DIE2 -S_POD_DIE2 PPOD D* 5 A_Scream S_POD_DIE3 -S_POD_DIE3 PPOD E* 5 A_Explode S_POD_DIE4 -S_POD_DIE4 PPOD F* 10 NULL S_FREETARGMOBJ - -S_POD_GROW1 PPOD I 3 NULL S_POD_GROW2 -S_POD_GROW2 PPOD J 3 NULL S_POD_GROW3 -S_POD_GROW3 PPOD K 3 NULL S_POD_GROW4 -S_POD_GROW4 PPOD L 3 NULL S_POD_GROW5 -S_POD_GROW5 PPOD M 3 NULL S_POD_GROW6 -S_POD_GROW6 PPOD N 3 NULL S_POD_GROW7 -S_POD_GROW7 PPOD O 3 NULL S_POD_GROW8 -S_POD_GROW8 PPOD P 3 NULL S_POD_WAIT1 - -S_PODGOO1 PPOD G 8 NULL S_PODGOO2 -S_PODGOO2 PPOD H 8 NULL S_PODGOO1 - -S_PODGOOX PPOD G 10 NULL S_NULL - -S_PODGENERATOR AMG1 A 35 A_MakePod S_PODGENERATOR - - -// -// environmental effects -// - -$ MT_SPLASH -spawnstate S_SPLASH1 -deathstate S_SPLASHX -radius 2 -height 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH - -$ MT_SPLASHBASE -spawnstate S_SPLASHBASE1 -flags MF_NOBLOCKMAP - -$ MT_LAVASPLASH -spawnstate S_LAVASPLASH1 -flags MF_NOBLOCKMAP - -$ MT_LAVASMOKE -spawnstate S_LAVASMOKE1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.33 - -$ MT_SLUDGECHUNK -spawnstate S_SLUDGECHUNK1 -deathstate S_SLUDGECHUNKX -radius 2 -height 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH - -$ MT_SLUDGESPLASH -spawnstate S_SLUDGESPLASH1 -flags MF_NOBLOCKMAP - -S_SPLASH1 SPSH A 8 NULL S_SPLASH2 -S_SPLASH2 SPSH B 8 NULL S_SPLASH3 -S_SPLASH3 SPSH C 8 NULL S_SPLASH4 -S_SPLASH4 SPSH D 16 NULL S_NULL - -S_SPLASHX SPSH D 10 NULL S_NULL - -S_SPLASHBASE1 SPSH E 5 NULL S_SPLASHBASE2 -S_SPLASHBASE2 SPSH F 5 NULL S_SPLASHBASE3 -S_SPLASHBASE3 SPSH G 5 NULL S_SPLASHBASE4 -S_SPLASHBASE4 SPSH H 5 NULL S_SPLASHBASE5 -S_SPLASHBASE5 SPSH I 5 NULL S_SPLASHBASE6 -S_SPLASHBASE6 SPSH J 5 NULL S_SPLASHBASE7 -S_SPLASHBASE7 SPSH K 5 NULL S_NULL - -S_LAVASPLASH1 LVAS A* 5 NULL S_LAVASPLASH2 -S_LAVASPLASH2 LVAS B* 5 NULL S_LAVASPLASH3 -S_LAVASPLASH3 LVAS C* 5 NULL S_LAVASPLASH4 -S_LAVASPLASH4 LVAS D* 5 NULL S_LAVASPLASH5 -S_LAVASPLASH5 LVAS E* 5 NULL S_LAVASPLASH6 -S_LAVASPLASH6 LVAS F* 5 NULL S_NULL - -S_LAVASMOKE1 LVAS G* 5 NULL S_LAVASMOKE2 -S_LAVASMOKE2 LVAS H* 5 NULL S_LAVASMOKE3 -S_LAVASMOKE3 LVAS I* 5 NULL S_LAVASMOKE4 -S_LAVASMOKE4 LVAS J* 5 NULL S_LAVASMOKE5 -S_LAVASMOKE5 LVAS K* 5 NULL S_NULL - -S_SLUDGECHUNK1 SLDG A 8 NULL S_SLUDGECHUNK2 -S_SLUDGECHUNK2 SLDG B 8 NULL S_SLUDGECHUNK3 -S_SLUDGECHUNK3 SLDG C 8 NULL S_SLUDGECHUNK4 -S_SLUDGECHUNK4 SLDG D 8 NULL S_NULL - -S_SLUDGECHUNKX SLDG D 6 NULL S_NULL - -S_SLUDGESPLASH1 SLDG E 5 NULL S_SLUDGESPLASH2 -S_SLUDGESPLASH2 SLDG F 5 NULL S_SLUDGESPLASH3 -S_SLUDGESPLASH3 SLDG G 5 NULL S_SLUDGESPLASH4 -S_SLUDGESPLASH4 SLDG H 5 NULL S_NULL - - -// -// scenery -// - -$ MT_SKULLHANG70 -doomednum 17 -spawnstate S_SKULLHANG70_1 -height 70 -flags MF_SPAWNCEILING|MF_NOGRAVITY - -$ MT_SKULLHANG60 -doomednum 24 -spawnstate S_SKULLHANG60_1 -height 60 -flags MF_SPAWNCEILING|MF_NOGRAVITY - -$ MT_SKULLHANG45 -doomednum 25 -spawnstate S_SKULLHANG45_1 -height 45 -flags MF_SPAWNCEILING|MF_NOGRAVITY - -$ MT_SKULLHANG35 -doomednum 26 -spawnstate S_SKULLHANG35_1 -height 35 -flags MF_SPAWNCEILING|MF_NOGRAVITY - -$ MT_CHANDELIER -doomednum 28 -spawnstate S_CHANDELIER1 -height 60 -flags MF_SPAWNCEILING|MF_NOGRAVITY - -$ MT_SERPTORCH -doomednum 27 -spawnstate S_SERPTORCH1 -radius 12 -height 54 -flags MF_SOLID - -$ MT_SMALLPILLAR -doomednum 29 -spawnstate S_SMALLPILLAR -radius 16 -height 34 -flags MF_SOLID - -$ MT_STALAGMITESMALL -doomednum 37 -spawnstate S_STALAGMITESMALL -radius 8 -height 32 -flags MF_SOLID - -$ MT_STALAGMITELARGE -doomednum 38 -spawnstate S_STALAGMITELARGE -radius 12 -height 64 -flags MF_SOLID - -$ MT_STALACTITESMALL -doomednum 39 -spawnstate S_STALACTITESMALL -radius 8 -height 36 -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - -$ MT_STALACTITELARGE -doomednum 40 -spawnstate S_STALACTITELARGE -radius 12 -height 68 -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - -$ + -doomednum 76 -spawnstate S_FIREBRAZIER1 -radius 16 -height 44 -flags MF_SOLID - -$ MT_BARREL -doomednum 44 -spawnstate S_BARREL -radius 12 -height 32 -flags MF_SOLID - -$ + -doomednum 47 -spawnstate S_BRPILLAR -radius 14 -height 128 -flags MF_SOLID - -$ + -doomednum 48 -spawnstate S_MOSS1 -height 23 -flags MF_SPAWNCEILING|MF_NOGRAVITY - -$ + -doomednum 49 -spawnstate S_MOSS2 -height 27 -flags MF_SPAWNCEILING|MF_NOGRAVITY - -$ + -doomednum 50 -spawnstate S_WALLTORCH1 -flags MF_NOGRAVITY - -$ + -doomednum 51 -spawnstate S_HANGINGCORPSE -radius 8 -height 104 -flags MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY - - -S_SKULLHANG70_1 SKH1 A -1 NULL S_NULL -S_SKULLHANG60_1 SKH2 A -1 NULL S_NULL -S_SKULLHANG45_1 SKH3 A -1 NULL S_NULL -S_SKULLHANG35_1 SKH4 A -1 NULL S_NULL - -S_CHANDELIER1 CHDL A 4 NULL S_CHANDELIER2 -S_CHANDELIER2 CHDL B 4 NULL S_CHANDELIER3 -S_CHANDELIER3 CHDL C 4 NULL S_CHANDELIER1 - -S_SERPTORCH1 SRTC A 4 NULL S_SERPTORCH2 -S_SERPTORCH2 SRTC B 4 NULL S_SERPTORCH3 -S_SERPTORCH3 SRTC C 4 NULL S_SERPTORCH1 - -S_SMALLPILLAR SMPL A -1 NULL S_NULL - -S_STALAGMITESMALL STGS A -1 NULL S_NULL -S_STALAGMITELARGE STGL A -1 NULL S_NULL -S_STALACTITESMALL STCS A -1 NULL S_NULL -S_STALACTITELARGE STCL A -1 NULL S_NULL - -S_FIREBRAZIER1 KFR1 A* 3 NULL S_FIREBRAZIER2 -S_FIREBRAZIER2 KFR1 B* 3 NULL S_FIREBRAZIER3 -S_FIREBRAZIER3 KFR1 C* 3 NULL S_FIREBRAZIER4 -S_FIREBRAZIER4 KFR1 D* 3 NULL S_FIREBRAZIER5 -S_FIREBRAZIER5 KFR1 E* 3 NULL S_FIREBRAZIER6 -S_FIREBRAZIER6 KFR1 F* 3 NULL S_FIREBRAZIER7 -S_FIREBRAZIER7 KFR1 G* 3 NULL S_FIREBRAZIER8 -S_FIREBRAZIER8 KFR1 H* 3 NULL S_FIREBRAZIER1 - -S_BARREL BARL A -1 NULL S_NULL - -S_BRPILLAR BRPL A -1 NULL S_NULL - -S_MOSS1 MOS1 A -1 NULL S_NULL -S_MOSS2 MOS2 A -1 NULL S_NULL - -S_WALLTORCH1 WTRH A* 6 NULL S_WALLTORCH2 -S_WALLTORCH2 WTRH B* 6 NULL S_WALLTORCH3 -S_WALLTORCH3 WTRH C* 6 NULL S_WALLTORCH1 - -S_HANGINGCORPSE HCOR A -1 NULL S_NULL - - -// -// key gizmo -// - -$ MT_KEYGIZMOBLUE -doomednum 94 -spawnstate S_KEYGIZMO1 -radius 16 -height 50 -flags MF_SOLID - -$ MT_KEYGIZMOGREEN -doomednum 95 -spawnstate S_KEYGIZMO1 -radius 16 -height 50 -flags MF_SOLID - -$ MT_KEYGIZMOYELLOW -doomednum 96 -spawnstate S_KEYGIZMO1 -radius 16 -height 50 -flags MF_SOLID - -$ MT_KEYGIZMOFLOAT -spawnstate S_KGZ_START -radius 16 -flags MF_SOLID|MF_NOGRAVITY - -S_KEYGIZMO1 KGZ1 A 1 NULL S_KEYGIZMO2 -S_KEYGIZMO2 KGZ1 A 1 A_InitKeyGizmo S_KEYGIZMO3 -S_KEYGIZMO3 KGZ1 A -1 NULL S_NULL - -S_KGZ_START KGZB A 1 NULL S_KGZ_START - -S_KGZ_BLUEFLOAT1 KGZB A* -1 NULL S_NULL -S_KGZ_GREENFLOAT1 KGZG A* -1 NULL S_NULL -S_KGZ_YELLOWFLOAT1 KGZY A* -1 NULL S_NULL - - -// -// volcano -// - -$ + -doomednum 87 -spawnstate S_VOLCANO1 -radius 12 -height 20 -flags MF_SOLID - -$ MT_VOLCANOBLAST -spawnstate S_VOLCANOBALL1 -deathstate S_VOLCANOBALLX1 -deathsound sfx_volhit -speed 2 -radius 8 -height 8 -damage 2 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF -flags2 MF2_LOGRAV|MF2_NOTELEPORT|MF2_FIREDAMAGE - -$ MT_VOLCANOTBLAST -spawnstate S_VOLCANOTBALL1 -deathstate S_VOLCANOTBALLX1 -speed 2 -radius 8 -height 6 -damage 1 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF -flags2 MF2_LOGRAV|MF2_NOTELEPORT|MF2_FIREDAMAGE - - -S_VOLCANO1 VLCO A 350 NULL S_VOLCANO2 -S_VOLCANO2 VLCO A 35 A_VolcanoSet S_VOLCANO3 -S_VOLCANO3 VLCO B 3 NULL S_VOLCANO4 -S_VOLCANO4 VLCO C 3 NULL S_VOLCANO5 -S_VOLCANO5 VLCO D 3 NULL S_VOLCANO6 -S_VOLCANO6 VLCO B 3 NULL S_VOLCANO7 -S_VOLCANO7 VLCO C 3 NULL S_VOLCANO8 -S_VOLCANO8 VLCO D 3 NULL S_VOLCANO9 -S_VOLCANO9 VLCO E 10 A_VolcanoBlast S_VOLCANO2 - -S_VOLCANOBALL1 VFBL A 4 A_BeastPuff S_VOLCANOBALL2 -S_VOLCANOBALL2 VFBL B 4 A_BeastPuff S_VOLCANOBALL1 - -S_VOLCANOBALLX1 XPL1 A 4 A_VolcBallImpact S_VOLCANOBALLX2 -S_VOLCANOBALLX2 XPL1 B 4 NULL S_VOLCANOBALLX3 -S_VOLCANOBALLX3 XPL1 C 4 NULL S_VOLCANOBALLX4 -S_VOLCANOBALLX4 XPL1 D 4 NULL S_VOLCANOBALLX5 -S_VOLCANOBALLX5 XPL1 E 4 NULL S_VOLCANOBALLX6 -S_VOLCANOBALLX6 XPL1 F 4 NULL S_NULL - -S_VOLCANOTBALL1 VTFB A 4 NULL S_VOLCANOTBALL2 -S_VOLCANOTBALL2 VTFB B 4 NULL S_VOLCANOTBALL1 - -S_VOLCANOTBALLX1 SFFI C 4 NULL S_VOLCANOTBALLX2 -S_VOLCANOTBALLX2 SFFI B 4 NULL S_VOLCANOTBALLX3 -S_VOLCANOTBALLX3 SFFI A 4 NULL S_VOLCANOTBALLX4 -S_VOLCANOTBALLX4 SFFI B 4 NULL S_VOLCANOTBALLX5 -S_VOLCANOTBALLX5 SFFI C 4 NULL S_VOLCANOTBALLX6 -S_VOLCANOTBALLX6 SFFI D 4 NULL S_VOLCANOTBALLX7 -S_VOLCANOTBALLX7 SFFI E 4 NULL S_NULL - - -// -// teleporter stuff -// - -$ MT_TELEGLITGEN -doomednum 74 -spawnstate S_TELEGLITGEN1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOSECTOR - -$ MT_TELEGLITGEN2 -doomednum 52 -spawnstate S_TELEGLITGEN2 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOSECTOR - -$ MT_TELEGLITTER -spawnstate S_TELEGLITTER1_1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE - -$ MT_TELEGLITTER2 -spawnstate S_TELEGLITTER2_1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE - -$ MT_TFOG -spawnstate S_TFOG1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -$ MT_TELEPORTMAN -doomednum 14 -flags MF_NOBLOCKMAP|MF_NOSECTOR - -S_TELEGLITGEN1 TGLT A 8 A_SpawnTeleGlitter S_TELEGLITGEN1 -S_TELEGLITGEN2 TGLT F 8 A_SpawnTeleGlitter2 S_TELEGLITGEN2 - -S_TELEGLITTER1_1 TGLT A* 2 NULL S_TELEGLITTER1_2 -S_TELEGLITTER1_2 TGLT B* 2 A_AccTeleGlitter S_TELEGLITTER1_3 -S_TELEGLITTER1_3 TGLT C* 2 NULL S_TELEGLITTER1_4 -S_TELEGLITTER1_4 TGLT D* 2 A_AccTeleGlitter S_TELEGLITTER1_5 -S_TELEGLITTER1_5 TGLT E* 2 NULL S_TELEGLITTER1_1 - -S_TELEGLITTER2_1 TGLT F* 2 NULL S_TELEGLITTER2_2 -S_TELEGLITTER2_2 TGLT G* 2 A_AccTeleGlitter S_TELEGLITTER2_3 -S_TELEGLITTER2_3 TGLT H* 2 NULL S_TELEGLITTER2_4 -S_TELEGLITTER2_4 TGLT I* 2 A_AccTeleGlitter S_TELEGLITTER2_5 -S_TELEGLITTER2_5 TGLT J* 2 NULL S_TELEGLITTER2_1 - -S_TFOG1 TELE A* 6 NULL S_TFOG2 -S_TFOG2 TELE B* 6 NULL S_TFOG3 -S_TFOG3 TELE C* 6 NULL S_TFOG4 -S_TFOG4 TELE D* 6 NULL S_TFOG5 -S_TFOG5 TELE E* 6 NULL S_TFOG6 -S_TFOG6 TELE F* 6 NULL S_TFOG7 -S_TFOG7 TELE G* 6 NULL S_TFOG8 -S_TFOG8 TELE H* 6 NULL S_TFOG9 -S_TFOG9 TELE G* 6 NULL S_TFOG10 -S_TFOG10 TELE F* 6 NULL S_TFOG11 -S_TFOG11 TELE E* 6 NULL S_TFOG12 -S_TFOG12 TELE D* 6 NULL S_TFOG13 -S_TFOG13 TELE C* 6 NULL S_NULL - - -//============================================================================ -// player sprites -//============================================================================ - -// all flashes go to S_LIGHTDONE to reset the light then remove self -S_LIGHTDONE STFF A 0 A_Light0 S_NULL - -// -// staff -// -$ MT_STAFFPUFF -spawnstate S_STAFFPUFF1 -attacksound sfx_stfhit -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -$ MT_STAFFPUFF2 -spawnstate S_STAFFPUFF2_1 -attacksound sfx_stfpow -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -S_STAFFREADY STFF A 1 A_WeaponReady S_STAFFREADY -S_STAFFDOWN STFF A 1 A_Lower S_STAFFDOWN -S_STAFFUP STFF A 1 A_Raise S_STAFFUP - -S_STAFFREADY2_1 STFF D 4 A_WeaponReady S_STAFFREADY2_2 -S_STAFFREADY2_2 STFF E 4 A_WeaponReady S_STAFFREADY2_3 -S_STAFFREADY2_3 STFF F 4 A_WeaponReady S_STAFFREADY2_1 - -S_STAFFDOWN2 STFF D 1 A_Lower S_STAFFDOWN2 -S_STAFFUP2 STFF D 1 A_Raise S_STAFFUP2 - -S_STAFFATK1_1 STFF B 6 NULL S_STAFFATK1_2 -S_STAFFATK1_2 STFF C 8 A_StaffAttackPL1 S_STAFFATK1_3 -S_STAFFATK1_3 STFF B 8 A_ReFire S_STAFFREADY - -S_STAFFATK2_1 STFF G 6 NULL S_STAFFATK2_2 -S_STAFFATK2_2 STFF H 8 A_StaffAttackPL2 S_STAFFATK2_3 -S_STAFFATK2_3 STFF G 8 A_ReFire S_STAFFREADY2_1 - -S_STAFFPUFF1 PUF3 A* 4 NULL S_STAFFPUFF2 -S_STAFFPUFF2 PUF3 B 4 NULL S_STAFFPUFF3 -S_STAFFPUFF3 PUF3 C 4 NULL S_STAFFPUFF4 -S_STAFFPUFF4 PUF3 D 4 NULL S_NULL - -S_STAFFPUFF2_1 PUF4 A* 4 NULL S_STAFFPUFF2_2 -S_STAFFPUFF2_2 PUF4 B* 4 NULL S_STAFFPUFF2_3 -S_STAFFPUFF2_3 PUF4 C* 4 NULL S_STAFFPUFF2_4 -S_STAFFPUFF2_4 PUF4 D* 4 NULL S_STAFFPUFF2_5 -S_STAFFPUFF2_5 PUF4 E* 4 NULL S_STAFFPUFF2_6 -S_STAFFPUFF2_6 PUF4 F* 4 NULL S_NULL - - -// -// beak -// -$ MT_BEAKPUFF -spawnstate S_STAFFPUFF1 -attacksound sfx_chicatk -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -S_BEAKREADY BEAK A 1 A_BeakReady S_BEAKREADY -S_BEAKDOWN BEAK A 1 A_Lower S_BEAKDOWN -S_BEAKUP BEAK A 1 A_BeakRaise S_BEAKUP - -S_BEAKATK1_1 BEAK A 18 A_BeakAttackPL1 S_BEAKREADY -S_BEAKATK2_1 BEAK A 12 A_BeakAttackPL2 S_BEAKREADY - - -// -// gauntlets -// -$ + -doomednum 2005 -spawnstate S_WGNT -flags MF_SPECIAL - -$ MT_GAUNTLETPUFF1 -spawnstate S_GAUNTLETPUFF1_1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.33 - -$ MT_GAUNTLETPUFF2 -spawnstate S_GAUNTLETPUFF2_1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -translucency 0.33 - -S_WGNT WGNT A -1 NULL S_NULL - -S_GAUNTLETREADY GAUN A 1 A_WeaponReady S_GAUNTLETREADY -S_GAUNTLETDOWN GAUN A 1 A_Lower S_GAUNTLETDOWN -S_GAUNTLETUP GAUN A 1 A_Raise S_GAUNTLETUP - -S_GAUNTLETREADY2_1 GAUN G 4 A_WeaponReady S_GAUNTLETREADY2_2 -S_GAUNTLETREADY2_2 GAUN H 4 A_WeaponReady S_GAUNTLETREADY2_3 -S_GAUNTLETREADY2_3 GAUN I 4 A_WeaponReady S_GAUNTLETREADY2_1 - -S_GAUNTLETDOWN2 GAUN G 1 A_Lower S_GAUNTLETDOWN2 -S_GAUNTLETUP2 GAUN G 1 A_Raise S_GAUNTLETUP2 - -S_GAUNTLETATK1_1 GAUN B 4 NULL S_GAUNTLETATK1_2 -S_GAUNTLETATK1_2 GAUN C 4 NULL S_GAUNTLETATK1_3 -S_GAUNTLETATK1_3 GAUN D* 4 A_GauntletAttack S_GAUNTLETATK1_4 -S_GAUNTLETATK1_4 GAUN E* 4 A_GauntletAttack S_GAUNTLETATK1_5 -S_GAUNTLETATK1_5 GAUN F* 4 A_GauntletAttack S_GAUNTLETATK1_6 -S_GAUNTLETATK1_6 GAUN C 4 A_ReFire S_GAUNTLETATK1_7 -S_GAUNTLETATK1_7 GAUN B 4 A_Light0 S_GAUNTLETREADY -S_GAUNTLETATK2_1 GAUN J 4 NULL S_GAUNTLETATK2_2 -S_GAUNTLETATK2_2 GAUN K 4 NULL S_GAUNTLETATK2_3 -S_GAUNTLETATK2_3 GAUN L* 4 A_GauntletAttack S_GAUNTLETATK2_4 -S_GAUNTLETATK2_4 GAUN M* 4 A_GauntletAttack S_GAUNTLETATK2_5 -S_GAUNTLETATK2_5 GAUN N* 4 A_GauntletAttack S_GAUNTLETATK2_6 -S_GAUNTLETATK2_6 GAUN K 4 A_ReFire S_GAUNTLETATK2_7 -S_GAUNTLETATK2_7 GAUN J 4 A_Light0 S_GAUNTLETREADY2_1 - -S_GAUNTLETPUFF1_1 PUF1 A* 4 NULL S_GAUNTLETPUFF1_2 -S_GAUNTLETPUFF1_2 PUF1 B* 4 NULL S_GAUNTLETPUFF1_3 -S_GAUNTLETPUFF1_3 PUF1 C* 4 NULL S_GAUNTLETPUFF1_4 -S_GAUNTLETPUFF1_4 PUF1 D* 4 NULL S_NULL - -S_GAUNTLETPUFF2_1 PUF1 E* 4 NULL S_GAUNTLETPUFF2_2 -S_GAUNTLETPUFF2_2 PUF1 F* 4 NULL S_GAUNTLETPUFF2_3 -S_GAUNTLETPUFF2_3 PUF1 G* 4 NULL S_GAUNTLETPUFF2_4 -S_GAUNTLETPUFF2_4 PUF1 H* 4 NULL S_NULL - - -// -// blaster -// -$ + -doomednum 53 -spawnstate S_BLSR -flags MF_SPECIAL - -$ MT_BLASTERFX1 -spawnstate S_BLASTERFX1_1 -deathstate S_BLASTERFXI1_1 -deathsound sfx_blshit -speed 184 -radius 12 -height 8 -damage 2 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_BLASTERSMOKE -spawnstate S_BLASTERSMOKE1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_CANNOTPUSH -translucency 0.33 - -$ MT_RIPPER -spawnstate S_RIPPER1 -seesound 0 -deathstate S_RIPPERX1 -deathsound sfx_hrnhit -speed 14 -radius 8 -height 6 -damage 1 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_RIP - -$ MT_BLASTERPUFF1 -spawnstate S_BLASTERPUFF1_1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -$ MT_BLASTERPUFF2 -spawnstate S_BLASTERPUFF2_1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -S_BLSR WBLS A -1 NULL S_NULL - -S_BLASTERREADY BLSR A 1 A_WeaponReady S_BLASTERREADY -S_BLASTERDOWN BLSR A 1 A_Lower S_BLASTERDOWN -S_BLASTERUP BLSR A 1 A_Raise S_BLASTERUP - -S_BLASTERATK1_1 BLSR B 3 NULL S_BLASTERATK1_2 -S_BLASTERATK1_2 BLSR C 3 NULL S_BLASTERATK1_3 -S_BLASTERATK1_3 BLSR D 2 A_FireBlasterPL1 S_BLASTERATK1_4 -S_BLASTERATK1_4 BLSR C 2 NULL S_BLASTERATK1_5 -S_BLASTERATK1_5 BLSR B 2 NULL S_BLASTERATK1_6 -S_BLASTERATK1_6 BLSR A 0 A_ReFire S_BLASTERREADY - -S_BLASTERATK2_1 BLSR B 0 NULL S_BLASTERATK2_2 -S_BLASTERATK2_2 BLSR C 0 NULL S_BLASTERATK2_3 -S_BLASTERATK2_3 BLSR D 3 A_FireBlasterPL2 S_BLASTERATK2_4 -S_BLASTERATK2_4 BLSR C 4 NULL S_BLASTERATK2_5 -S_BLASTERATK2_5 BLSR B 4 NULL S_BLASTERATK2_6 -S_BLASTERATK2_6 BLSR A 0 A_ReFire S_BLASTERREADY - -S_BLASTERFX1_1 ACLO E 200 NULL S_BLASTERFX1_1 - -S_BLASTERFXI1_1 FX18 A* 3 A_SpawnRippers S_BLASTERFXI1_2 -S_BLASTERFXI1_2 FX18 B* 3 NULL S_BLASTERFXI1_3 -S_BLASTERFXI1_3 FX18 C* 4 NULL S_BLASTERFXI1_4 -S_BLASTERFXI1_4 FX18 D* 4 NULL S_BLASTERFXI1_5 -S_BLASTERFXI1_5 FX18 E* 4 NULL S_BLASTERFXI1_6 -S_BLASTERFXI1_6 FX18 F* 4 NULL S_BLASTERFXI1_7 -S_BLASTERFXI1_7 FX18 G* 4 NULL S_NULL - -S_BLASTERSMOKE1 FX18 H 4 NULL S_BLASTERSMOKE2 -S_BLASTERSMOKE2 FX18 I 4 NULL S_BLASTERSMOKE3 -S_BLASTERSMOKE3 FX18 J 4 NULL S_BLASTERSMOKE4 -S_BLASTERSMOKE4 FX18 K 4 NULL S_BLASTERSMOKE5 -S_BLASTERSMOKE5 FX18 L 4 NULL S_NULL - -S_RIPPER1 FX18 M 4 NULL S_RIPPER2 -S_RIPPER2 FX18 N 5 NULL S_RIPPER1 - -S_RIPPERX1 FX18 O* 4 NULL S_RIPPERX2 -S_RIPPERX2 FX18 P* 4 NULL S_RIPPERX3 -S_RIPPERX3 FX18 Q* 4 NULL S_RIPPERX4 -S_RIPPERX4 FX18 R* 4 NULL S_RIPPERX5 -S_RIPPERX5 FX18 S* 4 NULL S_NULL - -S_BLASTERPUFF1_1 FX17 A* 4 NULL S_BLASTERPUFF1_2 -S_BLASTERPUFF1_2 FX17 B* 4 NULL S_BLASTERPUFF1_3 -S_BLASTERPUFF1_3 FX17 C* 4 NULL S_BLASTERPUFF1_4 -S_BLASTERPUFF1_4 FX17 D* 4 NULL S_BLASTERPUFF1_5 -S_BLASTERPUFF1_5 FX17 E* 4 NULL S_NULL - -S_BLASTERPUFF2_1 FX17 F* 3 NULL S_BLASTERPUFF2_2 -S_BLASTERPUFF2_2 FX17 G* 3 NULL S_BLASTERPUFF2_3 -S_BLASTERPUFF2_3 FX17 H* 4 NULL S_BLASTERPUFF2_4 -S_BLASTERPUFF2_4 FX17 I* 4 NULL S_BLASTERPUFF2_5 -S_BLASTERPUFF2_5 FX17 J* 4 NULL S_BLASTERPUFF2_6 -S_BLASTERPUFF2_6 FX17 K* 4 NULL S_BLASTERPUFF2_7 -S_BLASTERPUFF2_7 FX17 L* 4 NULL S_NULL - - -// -// mace -// -$ MT_WMACE -doomednum 2002 -spawnstate S_WMCE -flags MF_SPECIAL - -$ MT_MACEFX1 -spawnstate S_MACEFX1_1 -seesound sfx_lobsht -deathstate S_MACEFXI1_1 -deathsound 0 -speed 20 -radius 8 -height 6 -damage 2 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_FLOORBOUNCE|MF2_THRUGHOST|MF2_NOTELEPORT - -$ MT_MACEFX2 -spawnstate S_MACEFX2_1 -seesound 0 -deathstate S_MACEFXI2_1 -deathsound 0 -speed 10 -radius 8 -height 6 -damage 6 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF -flags2 MF2_LOGRAV|MF2_FLOORBOUNCE|MF2_THRUGHOST|MF2_NOTELEPORT - -$ MT_MACEFX3 -spawnstate S_MACEFX3_1 -seesound 0 -deathstate S_MACEFXI1_1 -deathsound 0 -speed 7 -radius 8 -height 6 -damage 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF -flags2 MF2_LOGRAV|MF2_FLOORBOUNCE|MF2_THRUGHOST|MF2_NOTELEPORT - -$ MT_MACEFX4 -spawnstate S_MACEFX4_1 -seesound 0 -deathstate S_MACEFXI4_1 -deathsound 0 -speed 7 -radius 8 -height 6 -damage 18 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF -flags2 MF2_LOGRAV|MF2_FLOORBOUNCE|MF2_THRUGHOST|MF2_TELESTOMP - -S_WMCE WMCE A -1 NULL S_NULL - -S_MACEREADY MACE A 1 A_WeaponReady S_MACEREADY -S_MACEDOWN MACE A 1 A_Lower S_MACEDOWN -S_MACEUP MACE A 1 A_Raise S_MACEUP - -S_MACEATK1_1 MACE B 4 NULL S_MACEATK1_2 -S_MACEATK1_2 MACE C 3 A_FireMacePL1 S_MACEATK1_3 -S_MACEATK1_3 MACE D 3 A_FireMacePL1 S_MACEATK1_4 -S_MACEATK1_4 MACE E 3 A_FireMacePL1 S_MACEATK1_5 -S_MACEATK1_5 MACE F 3 A_FireMacePL1 S_MACEATK1_6 -S_MACEATK1_6 MACE C 4 A_ReFire S_MACEATK1_7 -S_MACEATK1_7 MACE D 4 NULL S_MACEATK1_8 -S_MACEATK1_8 MACE E 4 NULL S_MACEATK1_9 -S_MACEATK1_9 MACE F 4 NULL S_MACEATK1_10 -S_MACEATK1_10 MACE B 4 NULL S_MACEREADY - -S_MACEATK2_1 MACE B 4 NULL S_MACEATK2_2 -S_MACEATK2_2 MACE D 4 A_FireMacePL2 S_MACEATK2_3 -S_MACEATK2_3 MACE B 4 NULL S_MACEATK2_4 -S_MACEATK2_4 MACE A 8 A_ReFire S_MACEREADY - -S_MACEFX1_1 FX02 A 4 A_MacePL1Check S_MACEFX1_2 -S_MACEFX1_2 FX02 B 4 A_MacePL1Check S_MACEFX1_1 - -S_MACEFXI1_1 FX02 F* 4 A_MaceBallImpact S_MACEFXI1_2 -S_MACEFXI1_2 FX02 G* 4 NULL S_MACEFXI1_3 -S_MACEFXI1_3 FX02 H* 4 NULL S_MACEFXI1_4 -S_MACEFXI1_4 FX02 I* 4 NULL S_MACEFXI1_5 -S_MACEFXI1_5 FX02 J* 4 NULL S_NULL - -S_MACEFX2_1 FX02 C 4 NULL S_MACEFX2_2 -S_MACEFX2_2 FX02 D 4 NULL S_MACEFX2_1 - -S_MACEFXI2_1 FX02 F* 4 A_MaceBallImpact2 S_MACEFXI1_2 - -S_MACEFX3_1 FX02 A 4 NULL S_MACEFX3_2 -S_MACEFX3_2 FX02 B 4 NULL S_MACEFX3_1 - -S_MACEFX4_1 FX02 E 99 NULL S_MACEFX4_1 - -S_MACEFXI4_1 FX02 C* 4 A_DeathBallImpact S_MACEFXI1_2 - - -// -// skull rod -// -$ MT_WSKULLROD -doomednum 2004 -spawnstate S_WSKL -flags MF_SPECIAL - -$ MT_HORNRODFX1 -spawnstate S_HRODFX1_1 -seesound sfx_hrnsht -deathstate S_HRODFXI1_1 -deathsound sfx_hrnhit -speed 22 -radius 12 -height 8 -damage 3 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_WINDTHRUST|MF2_NOTELEPORT - -$ MT_HORNRODFX2 -spawnstate S_HRODFX2_1 -spawnhealth 140 -seesound sfx_hrnsht -deathstate S_HRODFXI2_1 -deathsound sfx_ramphit -speed 22 -radius 12 -height 8 -damage 10 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_RAINPLR1 -spawnstate S_RAINPLR1_1 -seesound 0 -deathstate S_RAINPLR1X_1 -deathsound 0 -speed 12 -radius 5 -height 12 -damage 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_RAINPLR2 -spawnstate S_RAINPLR2_1 -seesound 0 -deathstate S_RAINPLR2X_1 -deathsound 0 -speed 12 -radius 5 -height 12 -damage 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_RAINPLR3 -spawnstate S_RAINPLR3_1 -seesound 0 -deathstate S_RAINPLR3X_1 -deathsound 0 -speed 12 -radius 5 -height 12 -damage 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_RAINPLR4 -spawnstate S_RAINPLR4_1 -seesound 0 -deathstate S_RAINPLR4X_1 -deathsound 0 -speed 12 -radius 5 -height 12 -damage 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -S_WSKL WSKL A -1 NULL S_NULL - -S_HORNRODREADY HROD A 1 A_WeaponReady S_HORNRODREADY -S_HORNRODDOWN HROD A 1 A_Lower S_HORNRODDOWN -S_HORNRODUP HROD A 1 A_Raise S_HORNRODUP - -S_HORNRODATK1_1 HROD A 4 A_FireSkullRodPL1 S_HORNRODATK1_2 -S_HORNRODATK1_2 HROD B 4 A_FireSkullRodPL1 S_HORNRODATK1_3 -S_HORNRODATK1_3 HROD B 0 A_ReFire S_HORNRODREADY -S_HORNRODATK2_1 HROD C 2 NULL S_HORNRODATK2_2 -S_HORNRODATK2_2 HROD D 3 NULL S_HORNRODATK2_3 -S_HORNRODATK2_3 HROD E 2 NULL S_HORNRODATK2_4 -S_HORNRODATK2_4 HROD F 3 NULL S_HORNRODATK2_5 -S_HORNRODATK2_5 HROD G 4 A_FireSkullRodPL2 S_HORNRODATK2_6 -S_HORNRODATK2_6 HROD F 2 NULL S_HORNRODATK2_7 -S_HORNRODATK2_7 HROD E 3 NULL S_HORNRODATK2_8 -S_HORNRODATK2_8 HROD D 2 NULL S_HORNRODATK2_9 -S_HORNRODATK2_9 HROD C 2 A_ReFire S_HORNRODREADY - -S_HRODFX1_1 FX00 A* 6 NULL S_HRODFX1_2 -S_HRODFX1_2 FX00 B* 6 NULL S_HRODFX1_1 - -S_HRODFXI1_1 FX00 H* 5 NULL S_HRODFXI1_2 -S_HRODFXI1_2 FX00 I* 5 NULL S_HRODFXI1_3 -S_HRODFXI1_3 FX00 J* 4 NULL S_HRODFXI1_4 -S_HRODFXI1_4 FX00 K* 4 NULL S_HRODFXI1_5 -S_HRODFXI1_5 FX00 L* 3 NULL S_HRODFXI1_6 -S_HRODFXI1_6 FX00 M* 3 NULL S_NULL - -S_HRODFX2_1 FX00 C* 3 NULL S_HRODFX2_2 -S_HRODFX2_2 FX00 D* 3 A_SkullRodPL2Seek S_HRODFX2_3 -S_HRODFX2_3 FX00 E* 3 NULL S_HRODFX2_4 -S_HRODFX2_4 FX00 F* 3 A_SkullRodPL2Seek S_HRODFX2_1 - -S_HRODFXI2_1 FX00 H* 5 A_AddPlayerRain S_HRODFXI2_2 -S_HRODFXI2_2 FX00 I* 5 NULL S_HRODFXI2_3 -S_HRODFXI2_3 FX00 J* 4 NULL S_HRODFXI2_4 -S_HRODFXI2_4 FX00 K* 3 NULL S_HRODFXI2_5 -S_HRODFXI2_5 FX00 L* 3 NULL S_HRODFXI2_6 -S_HRODFXI2_6 FX00 M* 3 NULL S_HRODFXI2_7 -S_HRODFXI2_7 FX00 G 1 A_HideInCeiling S_HRODFXI2_8 -S_HRODFXI2_8 FX00 G 1 A_SkullRodStorm S_HRODFXI2_8 - -S_RAINPLR1_1 FX20 A* -1 NULL S_NULL -S_RAINPLR2_1 FX21 A* -1 NULL S_NULL -S_RAINPLR3_1 FX22 A* -1 NULL S_NULL -S_RAINPLR4_1 FX23 A* -1 NULL S_NULL - -S_RAINPLR1X_1 FX20 B* 4 A_RainImpact S_RAINPLR1X_2 -S_RAINPLR1X_2 FX20 C* 4 NULL S_RAINPLR1X_3 -S_RAINPLR1X_3 FX20 D* 4 NULL S_RAINPLR1X_4 -S_RAINPLR1X_4 FX20 E* 4 NULL S_RAINPLR1X_5 -S_RAINPLR1X_5 FX20 F* 4 NULL S_NULL - -S_RAINPLR2X_1 FX21 B* 4 A_RainImpact S_RAINPLR2X_2 -S_RAINPLR2X_2 FX21 C* 4 NULL S_RAINPLR2X_3 -S_RAINPLR2X_3 FX21 D* 4 NULL S_RAINPLR2X_4 -S_RAINPLR2X_4 FX21 E* 4 NULL S_RAINPLR2X_5 -S_RAINPLR2X_5 FX21 F* 4 NULL S_NULL - -S_RAINPLR3X_1 FX22 B* 4 A_RainImpact S_RAINPLR3X_2 -S_RAINPLR3X_2 FX22 C* 4 NULL S_RAINPLR3X_3 -S_RAINPLR3X_3 FX22 D* 4 NULL S_RAINPLR3X_4 -S_RAINPLR3X_4 FX22 E* 4 NULL S_RAINPLR3X_5 -S_RAINPLR3X_5 FX22 F* 4 NULL S_NULL - -S_RAINPLR4X_1 FX23 B* 4 A_RainImpact S_RAINPLR4X_2 -S_RAINPLR4X_2 FX23 C* 4 NULL S_RAINPLR4X_3 -S_RAINPLR4X_3 FX23 D* 4 NULL S_RAINPLR4X_4 -S_RAINPLR4X_4 FX23 E* 4 NULL S_RAINPLR4X_5 -S_RAINPLR4X_5 FX23 F* 4 NULL S_NULL - -S_RAINAIRXPLR1_1 FX20 G* 4 NULL S_RAINAIRXPLR1_2 -S_RAINAIRXPLR2_1 FX21 G* 4 NULL S_RAINAIRXPLR2_2 -S_RAINAIRXPLR3_1 FX22 G* 4 NULL S_RAINAIRXPLR3_2 -S_RAINAIRXPLR4_1 FX23 G* 4 NULL S_RAINAIRXPLR4_2 -S_RAINAIRXPLR1_2 FX20 H* 4 NULL S_RAINAIRXPLR1_3 -S_RAINAIRXPLR2_2 FX21 H* 4 NULL S_RAINAIRXPLR2_3 -S_RAINAIRXPLR3_2 FX22 H* 4 NULL S_RAINAIRXPLR3_3 -S_RAINAIRXPLR4_2 FX23 H* 4 NULL S_RAINAIRXPLR4_3 -S_RAINAIRXPLR1_3 FX20 I* 4 NULL S_NULL -S_RAINAIRXPLR2_3 FX21 I* 4 NULL S_NULL -S_RAINAIRXPLR3_3 FX22 I* 4 NULL S_NULL -S_RAINAIRXPLR4_3 FX23 I* 4 NULL S_NULL - - -// -// gold wand -// -$ MT_GOLDWANDFX1 -spawnstate S_GWANDFX1_1 -seesound 0 -deathstate S_GWANDFXI1_1 -deathsound sfx_gldhit -speed 22 -radius 10 -height 6 -damage 2 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_GOLDWANDFX2 -spawnstate S_GWANDFX2_1 -seesound 0 -deathstate S_GWANDFXI1_1 -deathsound 0 -speed 18 -radius 10 -height 6 -damage 1 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_GOLDWANDPUFF1 -spawnstate S_GWANDPUFF1_1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -$ MT_GOLDWANDPUFF2 -spawnstate S_GWANDFXI1_1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -S_GOLDWANDREADY GWND A 1 A_WeaponReady S_GOLDWANDREADY -S_GOLDWANDDOWN GWND A 1 A_Lower S_GOLDWANDDOWN -S_GOLDWANDUP GWND A 1 A_Raise S_GOLDWANDUP - -S_GOLDWANDATK1_1 GWND B 3 NULL S_GOLDWANDATK1_2 -S_GOLDWANDATK1_2 GWND C 5 A_FireGoldWandPL1 S_GOLDWANDATK1_3 -S_GOLDWANDATK1_3 GWND D 3 NULL S_GOLDWANDATK1_4 -S_GOLDWANDATK1_4 GWND D 0 A_ReFire S_GOLDWANDREADY - -S_GOLDWANDATK2_1 GWND B 3 NULL S_GOLDWANDATK2_2 -S_GOLDWANDATK2_2 GWND C 4 A_FireGoldWandPL2 S_GOLDWANDATK2_3 -S_GOLDWANDATK2_3 GWND D 3 NULL S_GOLDWANDATK2_4 -S_GOLDWANDATK2_4 GWND D 0 A_ReFire S_GOLDWANDREADY - -S_GWANDFX1_1 FX01 A* 6 NULL S_GWANDFX1_2 -S_GWANDFX1_2 FX01 B* 6 NULL S_GWANDFX1_1 - -S_GWANDFXI1_1 FX01 E* 3 NULL S_GWANDFXI1_2 -S_GWANDFXI1_2 FX01 F* 3 NULL S_GWANDFXI1_3 -S_GWANDFXI1_3 FX01 G* 3 NULL S_GWANDFXI1_4 -S_GWANDFXI1_4 FX01 H* 3 NULL S_NULL - -S_GWANDFX2_1 FX01 C* 6 NULL S_GWANDFX2_2 -S_GWANDFX2_2 FX01 D* 6 NULL S_GWANDFX2_1 - -S_GWANDPUFF1_1 PUF2 A* 3 NULL S_GWANDPUFF1_2 -S_GWANDPUFF1_2 PUF2 B* 3 NULL S_GWANDPUFF1_3 -S_GWANDPUFF1_3 PUF2 C* 3 NULL S_GWANDPUFF1_4 -S_GWANDPUFF1_4 PUF2 D* 3 NULL S_GWANDPUFF1_5 -S_GWANDPUFF1_5 PUF2 E* 3 NULL S_NULL - - -// -// phoenix rod -// -$ MT_WPHOENIXROD -doomednum 2003 -spawnstate S_WPHX -flags MF_SPECIAL - -$ MT_PHOENIXFX1 -spawnstate S_PHOENIXFX1_1 -seesound sfx_phosht -deathstate S_PHOENIXFXI1_1 -deathsound sfx_phohit -speed 20 -radius 11 -height 8 -damage 20 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_THRUGHOST|MF2_NOTELEPORT - -$ MT_PHOENIXPUFF -spawnstate S_PHOENIXPUFF1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_CANNOTPUSH -translucency 0.33 - -$ MT_PHOENIXFX2 -spawnstate S_PHOENIXFX2_1 -seesound 0 -deathstate S_PHOENIXFXI2_1 -deathsound 0 -speed 10 -radius 6 -height 8 -damage 2 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FIREDAMAGE - -S_WPHX WPHX A -1 NULL S_NULL - -S_PHOENIXREADY PHNX A 1 A_WeaponReady S_PHOENIXREADY -S_PHOENIXDOWN PHNX A 1 A_Lower S_PHOENIXDOWN -S_PHOENIXUP PHNX A 1 A_Raise S_PHOENIXUP - -S_PHOENIXATK1_1 PHNX B 5 NULL S_PHOENIXATK1_2 -S_PHOENIXATK1_2 PHNX C 7 A_FirePhoenixPL1 S_PHOENIXATK1_3 -S_PHOENIXATK1_3 PHNX D 4 NULL S_PHOENIXATK1_4 -S_PHOENIXATK1_4 PHNX B 4 NULL S_PHOENIXATK1_5 -S_PHOENIXATK1_5 PHNX B 0 A_ReFire S_PHOENIXREADY - -S_PHOENIXATK2_1 PHNX B 3 A_InitPhoenixPL2 S_PHOENIXATK2_2 -S_PHOENIXATK2_2 PHNX C* 1 A_FirePhoenixPL2 S_PHOENIXATK2_3 -S_PHOENIXATK2_3 PHNX B 4 A_ReFire S_PHOENIXATK2_4 -S_PHOENIXATK2_4 PHNX B 4 A_ShutdownPhoenixPL2 S_PHOENIXREADY - -S_PHOENIXFX1_1 FX04 A* 4 A_PhoenixPuff S_PHOENIXFX1_1 - -S_PHOENIXFXI1_1 FX08 A* 6 A_Explode S_PHOENIXFXI1_2 -S_PHOENIXFXI1_2 FX08 B* 5 NULL S_PHOENIXFXI1_3 -S_PHOENIXFXI1_3 FX08 C* 5 NULL S_PHOENIXFXI1_4 -S_PHOENIXFXI1_4 FX08 D* 4 NULL S_PHOENIXFXI1_5 -S_PHOENIXFXI1_5 FX08 E* 4 NULL S_PHOENIXFXI1_6 -S_PHOENIXFXI1_6 FX08 F* 4 NULL S_PHOENIXFXI1_7 -S_PHOENIXFXI1_7 FX08 G* 4 NULL S_PHOENIXFXI1_8 -S_PHOENIXFXI1_8 FX08 H* 4 NULL S_NULL - -S_PHOENIXPUFF1 FX04 B 4 NULL S_PHOENIXPUFF2 -S_PHOENIXPUFF2 FX04 C 4 NULL S_PHOENIXPUFF3 -S_PHOENIXPUFF3 FX04 D 4 NULL S_PHOENIXPUFF4 -S_PHOENIXPUFF4 FX04 E 4 NULL S_PHOENIXPUFF5 -S_PHOENIXPUFF5 FX04 F 4 NULL S_NULL - -S_PHOENIXFX2_1 FX09 A* 2 NULL S_PHOENIXFX2_2 -S_PHOENIXFX2_2 FX09 B* 2 NULL S_PHOENIXFX2_3 -S_PHOENIXFX2_3 FX09 A* 2 NULL S_PHOENIXFX2_4 -S_PHOENIXFX2_4 FX09 B* 2 NULL S_PHOENIXFX2_5 -S_PHOENIXFX2_5 FX09 A* 2 NULL S_PHOENIXFX2_6 -S_PHOENIXFX2_6 FX09 B* 2 A_FlameEnd S_PHOENIXFX2_7 -S_PHOENIXFX2_7 FX09 C* 2 NULL S_PHOENIXFX2_8 -S_PHOENIXFX2_8 FX09 D* 2 NULL S_PHOENIXFX2_9 -S_PHOENIXFX2_9 FX09 E* 2 NULL S_PHOENIXFX2_10 -S_PHOENIXFX2_10 FX09 F* 2 NULL S_NULL - -S_PHOENIXFXI2_1 FX09 G* 3 NULL S_PHOENIXFXI2_2 -S_PHOENIXFXI2_2 FX09 H* 3 A_FloatPuff S_PHOENIXFXI2_3 -S_PHOENIXFXI2_3 FX09 I* 4 NULL S_PHOENIXFXI2_4 -S_PHOENIXFXI2_4 FX09 J* 5 NULL S_PHOENIXFXI2_5 -S_PHOENIXFXI2_5 FX09 K* 5 NULL S_NULL - - -// -// crossbow -// -$ + -doomednum 2001 -spawnstate S_WBOW -flags MF_SPECIAL - -$ MT_CRBOWFX1 -spawnstate S_CRBOWFX1 -seesound sfx_bowsht -deathstate S_CRBOWFXI1_1 -deathsound sfx_hrnhit -speed 30 -radius 11 -height 8 -damage 10 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_CRBOWFX2 -spawnstate S_CRBOWFX2 -seesound sfx_bowsht -deathstate S_CRBOWFXI1_1 -deathsound sfx_hrnhit -speed 32 -radius 11 -height 8 -damage 6 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_CRBOWFX3 -spawnstate S_CRBOWFX3 -seesound 0 -deathstate S_CRBOWFXI3_1 -deathsound sfx_hrnhit -speed 20 -radius 11 -height 8 -damage 2 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_WINDTHRUST|MF2_THRUGHOST|MF2_NOTELEPORT - -$ MT_CRBOWFX4 -spawnstate S_CRBOWFX4_1 -flags MF_NOBLOCKMAP -flags2 MF2_LOGRAV - -S_WBOW WBOW A -1 NULL S_NULL - -S_CRBOW1 CRBW A 1 A_WeaponReady S_CRBOW2 -S_CRBOW2 CRBW A 1 A_WeaponReady S_CRBOW3 -S_CRBOW3 CRBW A 1 A_WeaponReady S_CRBOW4 -S_CRBOW4 CRBW A 1 A_WeaponReady S_CRBOW5 -S_CRBOW5 CRBW A 1 A_WeaponReady S_CRBOW6 -S_CRBOW6 CRBW A 1 A_WeaponReady S_CRBOW7 -S_CRBOW7 CRBW B 1 A_WeaponReady S_CRBOW8 -S_CRBOW8 CRBW B 1 A_WeaponReady S_CRBOW9 -S_CRBOW9 CRBW B 1 A_WeaponReady S_CRBOW10 -S_CRBOW10 CRBW B 1 A_WeaponReady S_CRBOW11 -S_CRBOW11 CRBW B 1 A_WeaponReady S_CRBOW12 -S_CRBOW12 CRBW B 1 A_WeaponReady S_CRBOW13 -S_CRBOW13 CRBW C 1 A_WeaponReady S_CRBOW14 -S_CRBOW14 CRBW C 1 A_WeaponReady S_CRBOW15 -S_CRBOW15 CRBW C 1 A_WeaponReady S_CRBOW16 -S_CRBOW16 CRBW C 1 A_WeaponReady S_CRBOW17 -S_CRBOW17 CRBW C 1 A_WeaponReady S_CRBOW18 -S_CRBOW18 CRBW C 1 A_WeaponReady S_CRBOW1 - -S_CRBOWDOWN CRBW A 1 A_Lower S_CRBOWDOWN -S_CRBOWUP CRBW A 1 A_Raise S_CRBOWUP - -S_CRBOWATK1_1 CRBW D 6 A_FireCrossbowPL1 S_CRBOWATK1_2 -S_CRBOWATK1_2 CRBW E 3 NULL S_CRBOWATK1_3 -S_CRBOWATK1_3 CRBW F 3 NULL S_CRBOWATK1_4 -S_CRBOWATK1_4 CRBW G 3 NULL S_CRBOWATK1_5 -S_CRBOWATK1_5 CRBW H 3 NULL S_CRBOWATK1_6 -S_CRBOWATK1_6 CRBW A 4 NULL S_CRBOWATK1_7 -S_CRBOWATK1_7 CRBW B 4 NULL S_CRBOWATK1_8 -S_CRBOWATK1_8 CRBW C 5 A_ReFire S_CRBOW1 - -S_CRBOWATK2_1 CRBW D 5 A_FireCrossbowPL2 S_CRBOWATK2_2 -S_CRBOWATK2_2 CRBW E 3 NULL S_CRBOWATK2_3 -S_CRBOWATK2_3 CRBW F 2 NULL S_CRBOWATK2_4 -S_CRBOWATK2_4 CRBW G 3 NULL S_CRBOWATK2_5 -S_CRBOWATK2_5 CRBW H 2 NULL S_CRBOWATK2_6 -S_CRBOWATK2_6 CRBW A 3 NULL S_CRBOWATK2_7 -S_CRBOWATK2_7 CRBW B 3 NULL S_CRBOWATK2_8 -S_CRBOWATK2_8 CRBW C 4 A_ReFire S_CRBOW1 - -S_CRBOWFX1 FX03 B* 1 NULL S_CRBOWFX1 - -S_CRBOWFXI1_1 FX03 H* 8 NULL S_CRBOWFXI1_2 -S_CRBOWFXI1_2 FX03 I* 8 NULL S_CRBOWFXI1_3 -S_CRBOWFXI1_3 FX03 J* 8 NULL S_NULL - -S_CRBOWFX2 FX03 B* 1 A_BoltSpark S_CRBOWFX2 -S_CRBOWFX3 FX03 A* 1 NULL S_CRBOWFX3 - -S_CRBOWFXI3_1 FX03 C* 8 NULL S_CRBOWFXI3_2 -S_CRBOWFXI3_2 FX03 D* 8 NULL S_CRBOWFXI3_3 -S_CRBOWFXI3_3 FX03 E* 8 NULL S_NULL - -S_CRBOWFX4_1 FX03 F* 8 NULL S_CRBOWFX4_2 -S_CRBOWFX4_2 FX03 G* 8 NULL S_NULL - - -// -// blood -// -$ MT_BLOOD -spawnstate S_BLOOD1 -flags MF_NOBLOCKMAP - -$ MT_BLOODSPLATTER -spawnstate S_BLOODSPLATTER1 -deathstate S_BLOODSPLATTERX -radius 2 -height 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_CANNOTPUSH - -S_BLOOD1 BLOD C 8 NULL S_BLOOD2 -S_BLOOD2 BLOD B 8 NULL S_BLOOD3 -S_BLOOD3 BLOD A 8 NULL S_NULL - -S_BLOODSPLATTER1 BLOD C 8 NULL S_BLOODSPLATTER2 -S_BLOODSPLATTER2 BLOD B 8 NULL S_BLOODSPLATTER3 -S_BLOODSPLATTER3 BLOD A 8 NULL S_NULL - -S_BLOODSPLATTERX BLOD A 6 NULL S_NULL - - -// -// the player -// -$ MT_PLAYER -spawnstate S_PLAY -spawnhealth 100 -seestate S_PLAY_RUN1 -reactiontime 0 -painstate S_PLAY_PAIN -painchance 255 -painsound sfx_plrpai -missilestate S_PLAY_ATK1 -deathstate S_PLAY_DIE1 -xdeathstate S_PLAY_XDIE1 -deathsound sfx_plrdth -radius 16 -height 56 -flags MF_SOLID|MF_SHOOTABLE|MF_DROPOFF|MF_PICKUP|MF_NOTDMATCH -flags2 MF2_WINDTHRUST|MF2_FOOTCLIP|MF2_SLIDE|MF2_PASSMOBJ|MF2_TELESTOMP - -$ MT_BLOODYSKULL -spawnstate S_BLOODYSKULL1 -radius 4 -height 4 -flags MF_NOBLOCKMAP|MF_DROPOFF -flags2 MF2_LOGRAV|MF2_CANNOTPUSH - -$ MT_CHICPLAYER -spawnstate S_CHICPLAY -spawnhealth 100 -seestate S_CHICPLAY_RUN1 -reactiontime 0 -painstate S_CHICPLAY_PAIN -painchance 255 -painsound sfx_chicpai -missilestate S_CHICPLAY_ATK1 -deathstate S_CHICKEN_DIE1 -deathsound sfx_chicdth -radius 16 -height 24 -flags MF_SOLID|MF_SHOOTABLE|MF_DROPOFF|MF_NOTDMATCH -flags2 MF2_WINDTHRUST|MF2_SLIDE|MF2_PASSMOBJ|MF2_FOOTCLIP|MF2_LOGRAV|MF2_TELESTOMP - -// not a player, but still a chicken -$ MT_CHICKEN -spawnstate S_CHICKEN_LOOK1 -spawnhealth 10 -seestate S_CHICKEN_WALK1 -seesound sfx_chicpai -attacksound sfx_chicatk -painstate S_CHICKEN_PAIN1 -painchance 200 -painsound sfx_chicpai -meleestate S_CHICKEN_ATK1 -missilestate 0 -deathstate S_CHICKEN_DIE1 -deathsound sfx_chicdth -speed 4 -radius 9 -height 22 -mass 40 -activesound sfx_chicact -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_DROPOFF -flags2 MF2_WINDTHRUST|MF2_FOOTCLIP|MF2_PASSMOBJ - -$ MT_FEATHER -spawnstate S_FEATHER1 -deathstate S_FEATHERX -radius 2 -height 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF -flags2 MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH|MF2_WINDTHRUST - -S_PLAY PLAY A -1 NULL S_NULL - -S_PLAY_RUN1 PLAY A 4 NULL S_PLAY_RUN2 -S_PLAY_RUN2 PLAY B 4 NULL S_PLAY_RUN3 -S_PLAY_RUN3 PLAY C 4 NULL S_PLAY_RUN4 -S_PLAY_RUN4 PLAY D 4 NULL S_PLAY_RUN1 - -S_PLAY_ATK1 PLAY E 12 NULL S_PLAY -S_PLAY_ATK2 PLAY F* 6 NULL S_PLAY_ATK1 - -S_PLAY_PAIN PLAY G 4 NULL S_PLAY_PAIN2 -S_PLAY_PAIN2 PLAY G 4 A_Pain S_PLAY - -S_PLAY_DIE1 PLAY H 6 NULL S_PLAY_DIE2 -S_PLAY_DIE2 PLAY I 6 A_Scream S_PLAY_DIE3 -S_PLAY_DIE3 PLAY J 6 NULL S_PLAY_DIE4 -S_PLAY_DIE4 PLAY K 6 NULL S_PLAY_DIE5 -S_PLAY_DIE5 PLAY L 6 A_NoBlocking S_PLAY_DIE6 -S_PLAY_DIE6 PLAY M 6 NULL S_PLAY_DIE7 -S_PLAY_DIE7 PLAY N 6 NULL S_PLAY_DIE8 -S_PLAY_DIE8 PLAY O 6 NULL S_PLAY_DIE9 -S_PLAY_DIE9 PLAY P -1 A_AddPlayerCorpse S_NULL - -S_PLAY_XDIE1 PLAY Q 5 A_Scream S_PLAY_XDIE2 -S_PLAY_XDIE2 PLAY R 5 A_SkullPop S_PLAY_XDIE3 -S_PLAY_XDIE3 PLAY S 5 A_NoBlocking S_PLAY_XDIE4 -S_PLAY_XDIE4 PLAY T 5 NULL S_PLAY_XDIE5 -S_PLAY_XDIE5 PLAY U 5 NULL S_PLAY_XDIE6 -S_PLAY_XDIE6 PLAY V 5 NULL S_PLAY_XDIE7 -S_PLAY_XDIE7 PLAY W 5 NULL S_PLAY_XDIE8 -S_PLAY_XDIE8 PLAY X 5 NULL S_PLAY_XDIE9 -S_PLAY_XDIE9 PLAY Y -1 A_AddPlayerCorpse S_NULL - -S_PLAY_FDTH1 FDTH A* 5 A_FlameSnd S_PLAY_FDTH2 -S_PLAY_FDTH2 FDTH B* 4 NULL S_PLAY_FDTH3 -S_PLAY_FDTH3 FDTH C* 5 NULL S_PLAY_FDTH4 -S_PLAY_FDTH4 FDTH D* 4 A_Scream S_PLAY_FDTH5 -S_PLAY_FDTH5 FDTH E* 5 NULL S_PLAY_FDTH6 -S_PLAY_FDTH6 FDTH F* 4 NULL S_PLAY_FDTH7 -S_PLAY_FDTH7 FDTH G* 5 A_FlameSnd S_PLAY_FDTH8 -S_PLAY_FDTH8 FDTH H* 4 NULL S_PLAY_FDTH9 -S_PLAY_FDTH9 FDTH I* 5 NULL S_PLAY_FDTH10 -S_PLAY_FDTH10 FDTH J* 4 NULL S_PLAY_FDTH11 -S_PLAY_FDTH11 FDTH K* 5 NULL S_PLAY_FDTH12 -S_PLAY_FDTH12 FDTH L* 4 NULL S_PLAY_FDTH13 -S_PLAY_FDTH13 FDTH M* 5 NULL S_PLAY_FDTH14 -S_PLAY_FDTH14 FDTH N* 4 NULL S_PLAY_FDTH15 -S_PLAY_FDTH15 FDTH O* 5 A_NoBlocking S_PLAY_FDTH16 -S_PLAY_FDTH16 FDTH P* 4 NULL S_PLAY_FDTH17 -S_PLAY_FDTH17 FDTH Q* 5 NULL S_PLAY_FDTH18 -S_PLAY_FDTH18 FDTH R* 4 NULL S_PLAY_FDTH19 -S_PLAY_FDTH19 ACLO E 35 A_CheckBurnGone S_PLAY_FDTH19 -S_PLAY_FDTH20 ACLO E 8 NULL S_NULL - -S_BLOODYSKULL1 BSKL A 5 A_CheckSkullFloor S_BLOODYSKULL2 -S_BLOODYSKULL2 BSKL B 5 A_CheckSkullFloor S_BLOODYSKULL3 -S_BLOODYSKULL3 BSKL C 5 A_CheckSkullFloor S_BLOODYSKULL4 -S_BLOODYSKULL4 BSKL D 5 A_CheckSkullFloor S_BLOODYSKULL5 -S_BLOODYSKULL5 BSKL E 5 A_CheckSkullFloor S_BLOODYSKULL1 -S_BLOODYSKULLX1 BSKL F 16 A_CheckSkullDone S_BLOODYSKULLX1 -S_BLOODYSKULLX2 BSKL F 1050 NULL S_NULL - -S_CHICPLAY CHKN A -1 NULL S_NULL - -S_CHICPLAY_RUN1 CHKN A 3 NULL S_CHICPLAY_RUN2 -S_CHICPLAY_RUN2 CHKN B 3 NULL S_CHICPLAY_RUN3 -S_CHICPLAY_RUN3 CHKN A 3 NULL S_CHICPLAY_RUN4 -S_CHICPLAY_RUN4 CHKN B 3 NULL S_CHICPLAY_RUN1 - -S_CHICPLAY_ATK1 CHKN C 12 NULL S_CHICPLAY - -S_CHICPLAY_PAIN CHKN D 4 A_Feathers S_CHICPLAY_PAIN2 -S_CHICPLAY_PAIN2 CHKN C 4 A_Pain S_CHICPLAY - -S_CHICKEN_LOOK1 CHKN A 10 A_ChicLook S_CHICKEN_LOOK2 -S_CHICKEN_LOOK2 CHKN B 10 A_ChicLook S_CHICKEN_LOOK1 - -S_CHICKEN_WALK1 CHKN A 3 A_ChicChase S_CHICKEN_WALK2 -S_CHICKEN_WALK2 CHKN B 3 A_ChicChase S_CHICKEN_WALK1 - -S_CHICKEN_PAIN1 CHKN D 5 A_Feathers S_CHICKEN_PAIN2 -S_CHICKEN_PAIN2 CHKN C 5 A_ChicPain S_CHICKEN_WALK1 - -S_CHICKEN_ATK1 CHKN A 8 A_FaceTarget S_CHICKEN_ATK2 -S_CHICKEN_ATK2 CHKN C 10 A_ChicAttack S_CHICKEN_WALK1 - -S_CHICKEN_DIE1 CHKN E 6 A_Scream S_CHICKEN_DIE2 -S_CHICKEN_DIE2 CHKN F 6 A_Feathers S_CHICKEN_DIE3 -S_CHICKEN_DIE3 CHKN G 6 NULL S_CHICKEN_DIE4 -S_CHICKEN_DIE4 CHKN H 6 A_NoBlocking S_CHICKEN_DIE5 -S_CHICKEN_DIE5 CHKN I 6 NULL S_CHICKEN_DIE6 -S_CHICKEN_DIE6 CHKN J 6 NULL S_CHICKEN_DIE7 -S_CHICKEN_DIE7 CHKN K 6 NULL S_CHICKEN_DIE8 -S_CHICKEN_DIE8 CHKN L -1 NULL S_NULL - -S_FEATHER1 CHKN M 3 NULL S_FEATHER2 -S_FEATHER2 CHKN N 3 NULL S_FEATHER3 -S_FEATHER3 CHKN O 3 NULL S_FEATHER4 -S_FEATHER4 CHKN P 3 NULL S_FEATHER5 -S_FEATHER5 CHKN Q 3 NULL S_FEATHER6 -S_FEATHER6 CHKN P 3 NULL S_FEATHER7 -S_FEATHER7 CHKN O 3 NULL S_FEATHER8 -S_FEATHER8 CHKN N 3 NULL S_FEATHER1 - -S_FEATHERX CHKN N 6 NULL S_NULL - - -// -// mummy -// -$ MT_MUMMY -doomednum 68 -spawnstate S_MUMMY_LOOK1 -spawnhealth 80 -seestate S_MUMMY_WALK1 -seesound sfx_mumsit -attacksound sfx_mumat1 -painstate S_MUMMY_PAIN1 -painchance 128 -painsound sfx_mumpai -meleestate S_MUMMY_ATK1 -missilestate 0 -deathstate S_MUMMY_DIE1 -deathsound sfx_mumdth -speed 12 -radius 22 -height 62 -mass 75 -activesound sfx_mumact -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FOOTCLIP|MF2_PASSMOBJ - -$ MT_MUMMYLEADER -doomednum 45 -spawnstate S_MUMMY_LOOK1 -spawnhealth 100 -seestate S_MUMMY_WALK1 -seesound sfx_mumsit -attacksound sfx_mumat1 -painstate S_MUMMY_PAIN1 -painchance 64 -painsound sfx_mumpai -meleestate S_MUMMY_ATK1 -missilestate S_MUMMYL_ATK1 -deathstate S_MUMMY_DIE1 -deathsound sfx_mumdth -speed 12 -radius 22 -height 62 -mass 75 -activesound sfx_mumact -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FOOTCLIP|MF2_PASSMOBJ - -$ MT_MUMMYGHOST -doomednum 69 -spawnstate S_MUMMY_LOOK1 -spawnhealth 80 -seestate S_MUMMY_WALK1 -seesound sfx_mumsit -attacksound sfx_mumat1 -painstate S_MUMMY_PAIN1 -painchance 128 -painsound sfx_mumpai -meleestate S_MUMMY_ATK1 -missilestate 0 -deathstate S_MUMMY_DIE1 -deathsound sfx_mumdth -speed 12 -radius 22 -height 62 -mass 75 -activesound sfx_mumact -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_SHADOW -flags2 MF2_FOOTCLIP|MF2_PASSMOBJ - -$ MT_MUMMYLEADERGHOST -doomednum 46 -spawnstate S_MUMMY_LOOK1 -spawnhealth 100 -seestate S_MUMMY_WALK1 -seesound sfx_mumsit -attacksound sfx_mumat1 -painstate S_MUMMY_PAIN1 -painchance 64 -painsound sfx_mumpai -meleestate S_MUMMY_ATK1 -missilestate S_MUMMYL_ATK1 -deathstate S_MUMMY_DIE1 -deathsound sfx_mumdth -speed 12 -radius 22 -height 62 -mass 75 -activesound sfx_mumact -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_SHADOW -flags2 MF2_FOOTCLIP|MF2_PASSMOBJ - -$ MT_MUMMYSOUL -spawnstate S_MUMMY_SOUL1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY - -$ MT_MUMMYFX1 -spawnstate S_MUMMYFX1_1 -seesound 0 -deathstate S_MUMMYFXI1_1 -deathsound 0 -speed 9 -radius 8 -height 14 -damage 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -S_MUMMY_LOOK1 MUMM A 10 A_Look S_MUMMY_LOOK2 -S_MUMMY_LOOK2 MUMM B 10 A_Look S_MUMMY_LOOK1 - -S_MUMMY_WALK1 MUMM A 4 A_Chase S_MUMMY_WALK2 -S_MUMMY_WALK2 MUMM B 4 A_Chase S_MUMMY_WALK3 -S_MUMMY_WALK3 MUMM C 4 A_Chase S_MUMMY_WALK4 -S_MUMMY_WALK4 MUMM D 4 A_Chase S_MUMMY_WALK1 - -S_MUMMY_ATK1 MUMM E 6 A_FaceTarget S_MUMMY_ATK2 -S_MUMMY_ATK2 MUMM F 6 A_MummyAttack S_MUMMY_ATK3 -S_MUMMY_ATK3 MUMM G 6 A_FaceTarget S_MUMMY_WALK1 - -S_MUMMYL_ATK1 MUMM X 5 A_FaceTarget S_MUMMYL_ATK2 -S_MUMMYL_ATK2 MUMM Y* 5 A_FaceTarget S_MUMMYL_ATK3 -S_MUMMYL_ATK3 MUMM X 5 A_FaceTarget S_MUMMYL_ATK4 -S_MUMMYL_ATK4 MUMM Y* 5 A_FaceTarget S_MUMMYL_ATK5 -S_MUMMYL_ATK5 MUMM X 5 A_FaceTarget S_MUMMYL_ATK6 -S_MUMMYL_ATK6 MUMM Y* 15 A_MummyAttack2 S_MUMMY_WALK1 - -S_MUMMY_PAIN1 MUMM H 4 NULL S_MUMMY_PAIN2 -S_MUMMY_PAIN2 MUMM H 4 A_Pain S_MUMMY_WALK1 - -S_MUMMY_DIE1 MUMM I 5 NULL S_MUMMY_DIE2 -S_MUMMY_DIE2 MUMM J 5 A_Scream S_MUMMY_DIE3 -S_MUMMY_DIE3 MUMM K 5 A_MummySoul S_MUMMY_DIE4 -S_MUMMY_DIE4 MUMM L 5 NULL S_MUMMY_DIE5 -S_MUMMY_DIE5 MUMM M 5 A_NoBlocking S_MUMMY_DIE6 -S_MUMMY_DIE6 MUMM N 5 NULL S_MUMMY_DIE7 -S_MUMMY_DIE7 MUMM O 5 NULL S_MUMMY_DIE8 -S_MUMMY_DIE8 MUMM P -1 NULL S_NULL - -S_MUMMY_SOUL1 MUMM Q 5 NULL S_MUMMY_SOUL2 -S_MUMMY_SOUL2 MUMM R 5 NULL S_MUMMY_SOUL3 -S_MUMMY_SOUL3 MUMM S 5 NULL S_MUMMY_SOUL4 -S_MUMMY_SOUL4 MUMM T 9 NULL S_MUMMY_SOUL5 -S_MUMMY_SOUL5 MUMM U 5 NULL S_MUMMY_SOUL6 -S_MUMMY_SOUL6 MUMM V 5 NULL S_MUMMY_SOUL7 -S_MUMMY_SOUL7 MUMM W 5 NULL S_NULL - -S_MUMMYFX1_1 FX15 A* 5 A_ContMobjSound S_MUMMYFX1_2 -S_MUMMYFX1_2 FX15 B* 5 A_MummyFX1Seek S_MUMMYFX1_3 -S_MUMMYFX1_3 FX15 C* 5 NULL S_MUMMYFX1_4 -S_MUMMYFX1_4 FX15 B* 5 A_MummyFX1Seek S_MUMMYFX1_1 - -S_MUMMYFXI1_1 FX15 D* 5 NULL S_MUMMYFXI1_2 -S_MUMMYFXI1_2 FX15 E* 5 NULL S_MUMMYFXI1_3 -S_MUMMYFXI1_3 FX15 F* 5 NULL S_MUMMYFXI1_4 -S_MUMMYFXI1_4 FX15 G* 5 NULL S_NULL - - -// -// beast -// -$ MT_BEAST -doomednum 70 -spawnstate S_BEAST_LOOK1 -spawnhealth 220 -seestate S_BEAST_WALK1 -seesound sfx_bstsit -attacksound sfx_bstatk -painstate S_BEAST_PAIN1 -painchance 100 -painsound sfx_bstpai -meleestate 0 -missilestate S_BEAST_ATK1 -deathstate S_BEAST_DIE1 -xdeathstate S_BEAST_XDIE1 -deathsound sfx_bstdth -speed 14 -radius 32 -height 74 -mass 200 -activesound sfx_bstact -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FOOTCLIP|MF2_PASSMOBJ - -$ MT_BEASTBALL -spawnstate S_BEASTBALL1 -seesound 0 -deathstate S_BEASTBALLX1 -deathsound 0 -speed 12 -radius 9 -height 8 -damage 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_WINDTHRUST|MF2_NOTELEPORT - -$ MT_BURNBALL -spawnstate S_BURNBALL1 -seesound 0 -deathstate S_BEASTBALLX1 -deathsound 0 -speed 10 -radius 6 -height 8 -damage 2 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE -flags2 MF2_NOTELEPORT - -$ MT_BURNBALLFB -spawnstate S_BURNBALLFB1 -seesound 0 -deathstate S_BEASTBALLX1 -deathsound 0 -speed 10 -radius 6 -height 8 -damage 2 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE -flags2 MF2_NOTELEPORT - -$ MT_PUFFY -spawnstate S_PUFFY1 -seesound 0 -deathstate S_PUFFY1 -deathsound 0 -speed 10 -radius 6 -height 8 -damage 2 -flags MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE -flags2 MF2_NOTELEPORT - -S_BEAST_LOOK1 BEAS A 10 A_Look S_BEAST_LOOK2 -S_BEAST_LOOK2 BEAS B 10 A_Look S_BEAST_LOOK1 - -S_BEAST_WALK1 BEAS A 3 A_Chase S_BEAST_WALK2 -S_BEAST_WALK2 BEAS B 3 A_Chase S_BEAST_WALK3 -S_BEAST_WALK3 BEAS C 3 A_Chase S_BEAST_WALK4 -S_BEAST_WALK4 BEAS D 3 A_Chase S_BEAST_WALK5 -S_BEAST_WALK5 BEAS E 3 A_Chase S_BEAST_WALK6 -S_BEAST_WALK6 BEAS F 3 A_Chase S_BEAST_WALK1 - -S_BEAST_ATK1 BEAS H 10 A_FaceTarget S_BEAST_ATK2 -S_BEAST_ATK2 BEAS I 10 A_BeastAttack S_BEAST_WALK1 - -S_BEAST_PAIN1 BEAS G 3 NULL S_BEAST_PAIN2 -S_BEAST_PAIN2 BEAS G 3 A_Pain S_BEAST_WALK1 - -S_BEAST_DIE1 BEAS R 6 NULL S_BEAST_DIE2 -S_BEAST_DIE2 BEAS S 6 A_Scream S_BEAST_DIE3 -S_BEAST_DIE3 BEAS T 6 NULL S_BEAST_DIE4 -S_BEAST_DIE4 BEAS U 6 NULL S_BEAST_DIE5 -S_BEAST_DIE5 BEAS V 6 NULL S_BEAST_DIE6 -S_BEAST_DIE6 BEAS W 6 A_NoBlocking S_BEAST_DIE7 -S_BEAST_DIE7 BEAS X 6 NULL S_BEAST_DIE8 -S_BEAST_DIE8 BEAS Y 6 NULL S_BEAST_DIE9 -S_BEAST_DIE9 BEAS Z -1 NULL S_NULL - -S_BEAST_XDIE1 BEAS J 5 NULL S_BEAST_XDIE2 -S_BEAST_XDIE2 BEAS K 6 A_Scream S_BEAST_XDIE3 -S_BEAST_XDIE3 BEAS L 5 NULL S_BEAST_XDIE4 -S_BEAST_XDIE4 BEAS M 6 NULL S_BEAST_XDIE5 -S_BEAST_XDIE5 BEAS N 5 NULL S_BEAST_XDIE6 -S_BEAST_XDIE6 BEAS O 6 A_NoBlocking S_BEAST_XDIE7 -S_BEAST_XDIE7 BEAS P 5 NULL S_BEAST_XDIE8 -S_BEAST_XDIE8 BEAS Q -1 NULL S_NULL - -S_BEASTBALL1 FRB1 A 2 A_BeastPuff S_BEASTBALL2 -S_BEASTBALL2 FRB1 A 2 A_BeastPuff S_BEASTBALL3 -S_BEASTBALL3 FRB1 B 2 A_BeastPuff S_BEASTBALL4 -S_BEASTBALL4 FRB1 B 2 A_BeastPuff S_BEASTBALL5 -S_BEASTBALL5 FRB1 C 2 A_BeastPuff S_BEASTBALL6 -S_BEASTBALL6 FRB1 C 2 A_BeastPuff S_BEASTBALL1 - -S_BEASTBALLX1 FRB1 D 4 NULL S_BEASTBALLX2 -S_BEASTBALLX2 FRB1 E 4 NULL S_BEASTBALLX3 -S_BEASTBALLX3 FRB1 F 4 NULL S_BEASTBALLX4 -S_BEASTBALLX4 FRB1 G 4 NULL S_BEASTBALLX5 -S_BEASTBALLX5 FRB1 H 4 NULL S_NULL - -S_BURNBALL1 FRB1 A 4 NULL S_BURNBALL2 -S_BURNBALL2 FRB1 B 4 NULL S_BURNBALL3 -S_BURNBALL3 FRB1 C 4 NULL S_BURNBALL4 -S_BURNBALL4 FRB1 D 4 NULL S_BURNBALL5 -S_BURNBALL5 FRB1 E 4 NULL S_BURNBALL6 -S_BURNBALL6 FRB1 F 4 NULL S_BURNBALL7 -S_BURNBALL7 FRB1 G 4 NULL S_BURNBALL8 -S_BURNBALL8 FRB1 H 4 NULL S_NULL - -S_BURNBALLFB1 FRB1 A* 4 NULL S_BURNBALLFB2 -S_BURNBALLFB2 FRB1 B* 4 NULL S_BURNBALLFB3 -S_BURNBALLFB3 FRB1 C* 4 NULL S_BURNBALLFB4 -S_BURNBALLFB4 FRB1 D* 4 NULL S_BURNBALLFB5 -S_BURNBALLFB5 FRB1 E* 4 NULL S_BURNBALLFB6 -S_BURNBALLFB6 FRB1 F* 4 NULL S_BURNBALLFB7 -S_BURNBALLFB7 FRB1 G* 4 NULL S_BURNBALLFB8 -S_BURNBALLFB8 FRB1 H* 4 NULL S_NULL - -S_PUFFY1 FRB1 D 4 NULL S_PUFFY2 -S_PUFFY2 FRB1 E 4 NULL S_PUFFY3 -S_PUFFY3 FRB1 F 4 NULL S_PUFFY4 -S_PUFFY4 FRB1 G 4 NULL S_PUFFY5 -S_PUFFY5 FRB1 H 4 NULL S_NULL - - -// -// snake -// -$ MT_SNAKE -doomednum 92 -spawnstate S_SNAKE_LOOK1 -spawnhealth 280 -seestate S_SNAKE_WALK1 -seesound sfx_snksit -attacksound sfx_snkatk -painstate S_SNAKE_PAIN1 -painchance 48 -painsound sfx_snkpai -meleestate 0 -missilestate S_SNAKE_ATK1 -deathstate S_SNAKE_DIE1 -deathsound sfx_snkdth -speed 10 -radius 22 -height 70 -activesound sfx_snkact -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FOOTCLIP|MF2_PASSMOBJ - -$ MT_SNAKEPRO_A -spawnstate S_SNAKEPRO_A1 -seesound 0 -deathstate S_SNAKEPRO_AX1 -deathsound 0 -speed 14 -radius 12 -height 8 -damage 1 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_WINDTHRUST|MF2_NOTELEPORT - -$ MT_SNAKEPRO_B -spawnstate S_SNAKEPRO_B1 -seesound 0 -deathstate S_SNAKEPRO_BX1 -deathsound 0 -speed 14 -radius 12 -height 8 -damage 3 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -S_SNAKE_LOOK1 SNKE A 10 A_Look S_SNAKE_LOOK2 -S_SNAKE_LOOK2 SNKE B 10 A_Look S_SNAKE_LOOK1 - -S_SNAKE_WALK1 SNKE A 4 A_Chase S_SNAKE_WALK2 -S_SNAKE_WALK2 SNKE B 4 A_Chase S_SNAKE_WALK3 -S_SNAKE_WALK3 SNKE C 4 A_Chase S_SNAKE_WALK4 -S_SNAKE_WALK4 SNKE D 4 A_Chase S_SNAKE_WALK1 - -S_SNAKE_ATK1 SNKE F 5 A_FaceTarget S_SNAKE_ATK2 -S_SNAKE_ATK2 SNKE F 5 A_FaceTarget S_SNAKE_ATK3 -S_SNAKE_ATK3 SNKE F 4 A_SnakeAttack S_SNAKE_ATK4 -S_SNAKE_ATK4 SNKE F 4 A_SnakeAttack S_SNAKE_ATK5 -S_SNAKE_ATK5 SNKE F 4 A_SnakeAttack S_SNAKE_ATK6 -S_SNAKE_ATK6 SNKE F 5 A_FaceTarget S_SNAKE_ATK7 -S_SNAKE_ATK7 SNKE F 5 A_FaceTarget S_SNAKE_ATK8 -S_SNAKE_ATK8 SNKE F 5 A_FaceTarget S_SNAKE_ATK9 -S_SNAKE_ATK9 SNKE F 4 A_SnakeAttack2 S_SNAKE_WALK1 - -S_SNAKE_PAIN1 SNKE E 3 NULL S_SNAKE_PAIN2 -S_SNAKE_PAIN2 SNKE E 3 A_Pain S_SNAKE_WALK1 - -S_SNAKE_DIE1 SNKE G 5 NULL S_SNAKE_DIE2 -S_SNAKE_DIE2 SNKE H 5 A_Scream S_SNAKE_DIE3 -S_SNAKE_DIE3 SNKE I 5 NULL S_SNAKE_DIE4 -S_SNAKE_DIE4 SNKE J 5 NULL S_SNAKE_DIE5 -S_SNAKE_DIE5 SNKE K 5 NULL S_SNAKE_DIE6 -S_SNAKE_DIE6 SNKE L 5 NULL S_SNAKE_DIE7 -S_SNAKE_DIE7 SNKE M 5 A_NoBlocking S_SNAKE_DIE8 -S_SNAKE_DIE8 SNKE N 5 NULL S_SNAKE_DIE9 -S_SNAKE_DIE9 SNKE O 5 NULL S_SNAKE_DIE10 -S_SNAKE_DIE10 SNKE P -1 NULL S_NULL - -S_SNAKEPRO_A1 SNFX A* 5 NULL S_SNAKEPRO_A2 -S_SNAKEPRO_A2 SNFX B* 5 NULL S_SNAKEPRO_A3 -S_SNAKEPRO_A3 SNFX C* 5 NULL S_SNAKEPRO_A4 -S_SNAKEPRO_A4 SNFX D* 5 NULL S_SNAKEPRO_A1 - -S_SNAKEPRO_AX1 SNFX E* 5 NULL S_SNAKEPRO_AX2 -S_SNAKEPRO_AX2 SNFX F* 5 NULL S_SNAKEPRO_AX3 -S_SNAKEPRO_AX3 SNFX G* 4 NULL S_SNAKEPRO_AX4 -S_SNAKEPRO_AX4 SNFX H* 3 NULL S_SNAKEPRO_AX5 -S_SNAKEPRO_AX5 SNFX I* 3 NULL S_NULL - -S_SNAKEPRO_B1 SNFX J* 6 NULL S_SNAKEPRO_B2 -S_SNAKEPRO_B2 SNFX K* 6 NULL S_SNAKEPRO_B1 - -S_SNAKEPRO_BX1 SNFX L* 5 NULL S_SNAKEPRO_BX2 -S_SNAKEPRO_BX2 SNFX M* 5 NULL S_SNAKEPRO_BX3 -S_SNAKEPRO_BX3 SNFX N* 4 NULL S_SNAKEPRO_BX4 -S_SNAKEPRO_BX4 SNFX O* 3 NULL S_NULL - - -// -// head -// -$ MT_HEAD -doomednum 6 -spawnstate S_HEAD_LOOK -spawnhealth 700 -seestate S_HEAD_FLOAT -seesound sfx_hedsit -attacksound sfx_hedat1 -painstate S_HEAD_PAIN1 -painchance 32 -painsound sfx_hedpai -meleestate 0 -missilestate S_HEAD_ATK1 -deathstate S_HEAD_DIE1 -deathsound sfx_heddth -speed 6 -radius 40 -height 72 -mass 325 -activesound sfx_hedact -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_NOBLOOD -flags2 MF2_PASSMOBJ - -$ MT_HEADFX1 -spawnstate S_HEADFX1_1 -seesound 0 -deathstate S_HEADFXI1_1 -deathsound 0 -speed 13 -radius 12 -height 6 -damage 1 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_THRUGHOST - -$ MT_HEADFX2 -spawnstate S_HEADFX2_1 -seesound 0 -deathstate S_HEADFXI2_1 -deathsound 0 -speed 8 -radius 12 -height 6 -damage 3 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_HEADFX3 -spawnstate S_HEADFX3_1 -seesound 0 -deathstate S_HEADFXI3_1 -deathsound 0 -speed 10 -radius 14 -height 12 -damage 5 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_WINDTHRUST|MF2_NOTELEPORT - -$ MT_WHIRLWIND -spawnstate S_HEADFX4_1 -seesound 0 -deathstate S_HEADFXI4_1 -deathsound 0 -speed 10 -radius 16 -height 74 -damage 1 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT -translucency 0.33 - -S_HEAD_LOOK HEAD A 10 A_Look S_HEAD_LOOK - -S_HEAD_FLOAT HEAD A 4 A_Chase S_HEAD_FLOAT - -S_HEAD_ATK1 HEAD A 5 A_FaceTarget S_HEAD_ATK2 -S_HEAD_ATK2 HEAD B 20 A_HeadAttack S_HEAD_FLOAT - -S_HEAD_PAIN1 HEAD A 4 NULL S_HEAD_PAIN2 -S_HEAD_PAIN2 HEAD A 4 A_Pain S_HEAD_FLOAT - -S_HEAD_DIE1 HEAD C 7 NULL S_HEAD_DIE2 -S_HEAD_DIE2 HEAD D 7 A_Scream S_HEAD_DIE3 -S_HEAD_DIE3 HEAD E 7 NULL S_HEAD_DIE4 -S_HEAD_DIE4 HEAD F 7 NULL S_HEAD_DIE5 -S_HEAD_DIE5 HEAD G 7 A_NoBlocking S_HEAD_DIE6 -S_HEAD_DIE6 HEAD H 7 NULL S_HEAD_DIE7 -S_HEAD_DIE7 HEAD I -1 A_BossDeath S_NULL - -S_HEADFX1_1 FX05 A 6 NULL S_HEADFX1_2 -S_HEADFX1_2 FX05 B 6 NULL S_HEADFX1_3 -S_HEADFX1_3 FX05 C 6 NULL S_HEADFX1_1 - -S_HEADFXI1_1 FX05 D 5 A_HeadIceImpact S_HEADFXI1_2 -S_HEADFXI1_2 FX05 E 5 NULL S_HEADFXI1_3 -S_HEADFXI1_3 FX05 F 5 NULL S_HEADFXI1_4 -S_HEADFXI1_4 FX05 G 5 NULL S_NULL - -S_HEADFX2_1 FX05 H 6 NULL S_HEADFX2_2 -S_HEADFX2_2 FX05 I 6 NULL S_HEADFX2_3 -S_HEADFX2_3 FX05 J 6 NULL S_HEADFX2_1 - -S_HEADFXI2_1 FX05 D 5 NULL S_HEADFXI2_2 -S_HEADFXI2_2 FX05 E 5 NULL S_HEADFXI2_3 -S_HEADFXI2_3 FX05 F 5 NULL S_HEADFXI2_4 -S_HEADFXI2_4 FX05 G 5 NULL S_NULL - -S_HEADFX3_1 FX06 A 4 A_HeadFireGrow S_HEADFX3_2 -S_HEADFX3_2 FX06 B 4 A_HeadFireGrow S_HEADFX3_3 -S_HEADFX3_3 FX06 C 4 A_HeadFireGrow S_HEADFX3_1 -S_HEADFX3_4 FX06 A 5 NULL S_HEADFX3_5 -S_HEADFX3_5 FX06 B 5 NULL S_HEADFX3_6 -S_HEADFX3_6 FX06 C 5 NULL S_HEADFX3_4 - -S_HEADFXI3_1 FX06 D 5 NULL S_HEADFXI3_2 -S_HEADFXI3_2 FX06 E 5 NULL S_HEADFXI3_3 -S_HEADFXI3_3 FX06 F 5 NULL S_HEADFXI3_4 -S_HEADFXI3_4 FX06 G 5 NULL S_NULL - -S_HEADFX4_1 FX07 D 3 NULL S_HEADFX4_2 -S_HEADFX4_2 FX07 E 3 NULL S_HEADFX4_3 -S_HEADFX4_3 FX07 F 3 NULL S_HEADFX4_4 -S_HEADFX4_4 FX07 G 3 NULL S_HEADFX4_5 -S_HEADFX4_5 FX07 A 3 A_WhirlwindSeek S_HEADFX4_6 -S_HEADFX4_6 FX07 B 3 A_WhirlwindSeek S_HEADFX4_7 -S_HEADFX4_7 FX07 C 3 A_WhirlwindSeek S_HEADFX4_5 - -S_HEADFXI4_1 FX07 G 4 NULL S_HEADFXI4_2 -S_HEADFXI4_2 FX07 F 4 NULL S_HEADFXI4_3 -S_HEADFXI4_3 FX07 E 4 NULL S_HEADFXI4_4 -S_HEADFXI4_4 FX07 D 4 NULL S_NULL - - -// -// clink -// -$ MT_CLINK -doomednum 90 -spawnstate S_CLINK_LOOK1 -spawnhealth 150 -seestate S_CLINK_WALK1 -seesound sfx_clksit -attacksound sfx_clkatk -painstate S_CLINK_PAIN1 -painchance 32 -painsound sfx_clkpai -meleestate S_CLINK_ATK1 -missilestate 0 -deathstate S_CLINK_DIE1 -deathsound sfx_clkdth -speed 14 -height 64 -mass 75 -activesound sfx_clkact -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_NOBLOOD -flags2 MF2_FOOTCLIP|MF2_PASSMOBJ - -S_CLINK_LOOK1 CLNK A 10 A_Look S_CLINK_LOOK2 -S_CLINK_LOOK2 CLNK B 10 A_Look S_CLINK_LOOK1 - -S_CLINK_WALK1 CLNK A 3 A_Chase S_CLINK_WALK2 -S_CLINK_WALK2 CLNK B 3 A_Chase S_CLINK_WALK3 -S_CLINK_WALK3 CLNK C 3 A_Chase S_CLINK_WALK4 -S_CLINK_WALK4 CLNK D 3 A_Chase S_CLINK_WALK1 - -S_CLINK_ATK1 CLNK E 5 A_FaceTarget S_CLINK_ATK2 -S_CLINK_ATK2 CLNK F 4 A_FaceTarget S_CLINK_ATK3 -S_CLINK_ATK3 CLNK G 7 A_ClinkAttack S_CLINK_WALK1 - -S_CLINK_PAIN1 CLNK H 3 NULL S_CLINK_PAIN2 -S_CLINK_PAIN2 CLNK H 3 A_Pain S_CLINK_WALK1 - -S_CLINK_DIE1 CLNK I 6 NULL S_CLINK_DIE2 -S_CLINK_DIE2 CLNK J 6 NULL S_CLINK_DIE3 -S_CLINK_DIE3 CLNK K 5 A_Scream S_CLINK_DIE4 -S_CLINK_DIE4 CLNK L 5 A_NoBlocking S_CLINK_DIE5 -S_CLINK_DIE5 CLNK M 5 NULL S_CLINK_DIE6 -S_CLINK_DIE6 CLNK N 5 NULL S_CLINK_DIE7 -S_CLINK_DIE7 CLNK O -1 NULL S_NULL - - -// -// wizard -// -$ MT_WIZARD -doomednum 15 -spawnstate S_WIZARD_LOOK1 -spawnhealth 180 -seestate S_WIZARD_WALK1 -seesound sfx_wizsit -attacksound sfx_wizatk -painstate S_WIZARD_PAIN1 -painchance 64 -painsound sfx_wizpai -meleestate 0 -missilestate S_WIZARD_ATK1 -deathstate S_WIZARD_DIE1 -deathsound sfx_wizdth -speed 12 -radius 16 -height 68 -activesound sfx_wizact -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_FLOAT|MF_NOGRAVITY -flags2 MF2_PASSMOBJ - -$ MT_WIZFX1 -spawnstate S_WIZFX1_1 -seesound 0 -deathstate S_WIZFXI1_1 -deathsound 0 -speed 18 -radius 10 -height 6 -damage 3 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -S_WIZARD_LOOK1 WZRD A 10 A_Look S_WIZARD_LOOK2 -S_WIZARD_LOOK2 WZRD B 10 A_Look S_WIZARD_LOOK1 - -S_WIZARD_WALK1 WZRD A 3 A_Chase S_WIZARD_WALK2 -S_WIZARD_WALK2 WZRD A 4 A_Chase S_WIZARD_WALK3 -S_WIZARD_WALK3 WZRD A 3 A_Chase S_WIZARD_WALK4 -S_WIZARD_WALK4 WZRD A 4 A_Chase S_WIZARD_WALK5 -S_WIZARD_WALK5 WZRD B 3 A_Chase S_WIZARD_WALK6 -S_WIZARD_WALK6 WZRD B 4 A_Chase S_WIZARD_WALK7 -S_WIZARD_WALK7 WZRD B 3 A_Chase S_WIZARD_WALK8 -S_WIZARD_WALK8 WZRD B 4 A_Chase S_WIZARD_WALK1 - -S_WIZARD_ATK1 WZRD C 4 A_WizAtk1 S_WIZARD_ATK2 -S_WIZARD_ATK2 WZRD C 4 A_WizAtk2 S_WIZARD_ATK3 -S_WIZARD_ATK3 WZRD C 4 A_WizAtk1 S_WIZARD_ATK4 -S_WIZARD_ATK4 WZRD C 4 A_WizAtk2 S_WIZARD_ATK5 -S_WIZARD_ATK5 WZRD C 4 A_WizAtk1 S_WIZARD_ATK6 -S_WIZARD_ATK6 WZRD C 4 A_WizAtk2 S_WIZARD_ATK7 -S_WIZARD_ATK7 WZRD C 4 A_WizAtk1 S_WIZARD_ATK8 -S_WIZARD_ATK8 WZRD C 4 A_WizAtk2 S_WIZARD_ATK9 -S_WIZARD_ATK9 WZRD D 12 A_WizAtk3 S_WIZARD_WALK1 - -S_WIZARD_PAIN1 WZRD E 3 A_GhostOff S_WIZARD_PAIN2 -S_WIZARD_PAIN2 WZRD E 3 A_Pain S_WIZARD_WALK1 - -S_WIZARD_DIE1 WZRD F 6 A_GhostOff S_WIZARD_DIE2 -S_WIZARD_DIE2 WZRD G 6 A_Scream S_WIZARD_DIE3 -S_WIZARD_DIE3 WZRD H 6 NULL S_WIZARD_DIE4 -S_WIZARD_DIE4 WZRD I 6 NULL S_WIZARD_DIE5 -S_WIZARD_DIE5 WZRD J 6 A_NoBlocking S_WIZARD_DIE6 -S_WIZARD_DIE6 WZRD K 6 NULL S_WIZARD_DIE7 -S_WIZARD_DIE7 WZRD L 6 NULL S_WIZARD_DIE8 -S_WIZARD_DIE8 WZRD M -1 NULL S_NULL - -S_WIZFX1_1 FX11 A* 6 NULL S_WIZFX1_2 -S_WIZFX1_2 FX11 B* 6 NULL S_WIZFX1_1 -S_WIZFXI1_1 FX11 C* 5 NULL S_WIZFXI1_2 -S_WIZFXI1_2 FX11 D* 5 NULL S_WIZFXI1_3 -S_WIZFXI1_3 FX11 E* 5 NULL S_WIZFXI1_4 -S_WIZFXI1_4 FX11 F* 5 NULL S_WIZFXI1_5 -S_WIZFXI1_5 FX11 G* 5 NULL S_NULL - - -// -// imp -// -$ MT_IMP -doomednum 66 -spawnstate S_IMP_LOOK1 -spawnhealth 40 -seestate S_IMP_FLY1 -seesound sfx_impsit -attacksound sfx_impat1 -painstate S_IMP_PAIN1 -painchance 200 -painsound sfx_imppai -meleestate S_IMP_MEATK1 -missilestate S_IMP_MSATK1_1 -crashstate S_IMP_CRASH1 -deathstate S_IMP_DIE1 -xdeathstate S_IMP_XDIE1 -deathsound sfx_impdth -speed 10 -radius 16 -height 36 -mass 50 -activesound sfx_impact -flags MF_SOLID|MF_SHOOTABLE|MF_FLOAT|MF_NOGRAVITY|MF_COUNTKILL -flags2 MF2_SPAWNFLOAT|MF2_PASSMOBJ - -$ MT_IMPLEADER -doomednum 5 -spawnstate S_IMP_LOOK1 -spawnhealth 80 -seestate S_IMP_FLY1 -seesound sfx_impsit -attacksound sfx_impat2 -painstate S_IMP_PAIN1 -painchance 200 -painsound sfx_imppai -meleestate 0 -missilestate S_IMP_MSATK2_1 -crashstate S_IMP_CRASH1 -deathstate S_IMP_DIE1 -xdeathstate S_IMP_XDIE1 -deathsound sfx_impdth -speed 10 -radius 16 -height 36 -mass 50 -activesound sfx_impact -flags MF_SOLID|MF_SHOOTABLE|MF_FLOAT|MF_NOGRAVITY|MF_COUNTKILL -flags2 MF2_SPAWNFLOAT|MF2_PASSMOBJ - -$ MT_IMPCHUNK1 -spawnstate S_IMP_CHUNKA1 -flags MF_NOBLOCKMAP - -$ MT_IMPCHUNK2 -spawnstate S_IMP_CHUNKB1 -flags MF_NOBLOCKMAP - -$ MT_IMPBALL -spawnstate S_IMPFX1 -seesound 0 -deathstate S_IMPFXI1 -deathsound 0 -speed 10 -radius 8 -height 8 -damage 1 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_WINDTHRUST|MF2_NOTELEPORT - -S_IMP_LOOK1 IMPX A 10 A_Look S_IMP_LOOK2 -S_IMP_LOOK2 IMPX B 10 A_Look S_IMP_LOOK3 -S_IMP_LOOK3 IMPX C 10 A_Look S_IMP_LOOK4 -S_IMP_LOOK4 IMPX B 10 A_Look S_IMP_LOOK1 - -S_IMP_FLY1 IMPX A 3 A_Chase S_IMP_FLY2 -S_IMP_FLY2 IMPX A 3 A_Chase S_IMP_FLY3 -S_IMP_FLY3 IMPX B 3 A_Chase S_IMP_FLY4 -S_IMP_FLY4 IMPX B 3 A_Chase S_IMP_FLY5 -S_IMP_FLY5 IMPX C 3 A_Chase S_IMP_FLY6 -S_IMP_FLY6 IMPX C 3 A_Chase S_IMP_FLY7 -S_IMP_FLY7 IMPX B 3 A_Chase S_IMP_FLY8 -S_IMP_FLY8 IMPX B 3 A_Chase S_IMP_FLY1 - -S_IMP_MEATK1 IMPX D 6 A_FaceTarget S_IMP_MEATK2 -S_IMP_MEATK2 IMPX E 6 A_FaceTarget S_IMP_MEATK3 -S_IMP_MEATK3 IMPX F 6 A_ImpMeAttack S_IMP_FLY1 - -S_IMP_MSATK1_1 IMPX A 10 A_FaceTarget S_IMP_MSATK1_2 -S_IMP_MSATK1_2 IMPX B 6 A_ImpMsAttack S_IMP_MSATK1_3 -S_IMP_MSATK1_3 IMPX C 6 NULL S_IMP_MSATK1_4 -S_IMP_MSATK1_4 IMPX B 6 NULL S_IMP_MSATK1_5 -S_IMP_MSATK1_5 IMPX A 6 NULL S_IMP_MSATK1_6 -S_IMP_MSATK1_6 IMPX B 6 NULL S_IMP_MSATK1_3 -S_IMP_MSATK2_1 IMPX D 6 A_FaceTarget S_IMP_MSATK2_2 -S_IMP_MSATK2_2 IMPX E 6 A_FaceTarget S_IMP_MSATK2_3 -S_IMP_MSATK2_3 IMPX F 6 A_ImpMsAttack2 S_IMP_FLY1 - -S_IMP_PAIN1 IMPX G 3 NULL S_IMP_PAIN2 -S_IMP_PAIN2 IMPX G 3 A_Pain S_IMP_FLY1 - -S_IMP_DIE1 IMPX G 4 A_ImpDeath S_IMP_DIE2 -S_IMP_DIE2 IMPX H 5 NULL S_IMP_DIE2 - -S_IMP_XDIE1 IMPX S 5 A_ImpXDeath1 S_IMP_XDIE2 -S_IMP_XDIE2 IMPX T 5 NULL S_IMP_XDIE3 -S_IMP_XDIE3 IMPX U 5 NULL S_IMP_XDIE4 -S_IMP_XDIE4 IMPX V 5 A_ImpXDeath2 S_IMP_XDIE5 -S_IMP_XDIE5 IMPX W 5 NULL S_IMP_XDIE5 - -S_IMP_CRASH1 IMPX I 7 A_ImpExplode S_IMP_CRASH2 -S_IMP_CRASH2 IMPX J 7 A_Scream S_IMP_CRASH3 -S_IMP_CRASH3 IMPX K 7 NULL S_IMP_CRASH4 -S_IMP_CRASH4 IMPX L -1 NULL S_NULL - -S_IMP_XCRASH1 IMPX X 7 NULL S_IMP_XCRASH2 -S_IMP_XCRASH2 IMPX Y 7 NULL S_IMP_XCRASH3 -S_IMP_XCRASH3 IMPX Z -1 NULL S_NULL - -S_IMP_CHUNKA1 IMPX M 5 NULL S_IMP_CHUNKA2 -S_IMP_CHUNKA2 IMPX N 700 NULL S_IMP_CHUNKA3 -S_IMP_CHUNKA3 IMPX O 700 NULL S_NULL - -S_IMP_CHUNKB1 IMPX P 5 NULL S_IMP_CHUNKB2 -S_IMP_CHUNKB2 IMPX Q 700 NULL S_IMP_CHUNKB3 -S_IMP_CHUNKB3 IMPX R 700 NULL S_NULL - -S_IMPFX1 FX10 A* 6 NULL S_IMPFX2 -S_IMPFX2 FX10 B* 6 NULL S_IMPFX3 -S_IMPFX3 FX10 C* 6 NULL S_IMPFX1 - -S_IMPFXI1 FX10 D* 5 NULL S_IMPFXI2 -S_IMPFXI2 FX10 E* 5 NULL S_IMPFXI3 -S_IMPFXI3 FX10 F* 5 NULL S_IMPFXI4 -S_IMPFXI4 FX10 G* 5 NULL S_NULL - - -// -// knight -// -$ MT_KNIGHT -doomednum 64 -spawnstate S_KNIGHT_STND1 -spawnhealth 200 -seestate S_KNIGHT_WALK1 -seesound sfx_kgtsit -attacksound sfx_kgtatk -painstate S_KNIGHT_PAIN1 -painchance 100 -painsound sfx_kgtpai -meleestate S_KNIGHT_ATK1 -missilestate S_KNIGHT_ATK1 -deathstate S_KNIGHT_DIE1 -deathsound sfx_kgtdth -speed 12 -radius 24 -height 78 -mass 150 -activesound sfx_kgtact -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FOOTCLIP|MF2_PASSMOBJ - -$ MT_KNIGHTGHOST -doomednum 65 -spawnstate S_KNIGHT_STND1 -spawnhealth 200 -seestate S_KNIGHT_WALK1 -seesound sfx_kgtsit -attacksound sfx_kgtatk -painstate S_KNIGHT_PAIN1 -painchance 100 -painsound sfx_kgtpai -meleestate S_KNIGHT_ATK1 -missilestate S_KNIGHT_ATK1 -deathstate S_KNIGHT_DIE1 -deathsound sfx_kgtdth -speed 12 -radius 24 -height 78 -mass 150 -activesound sfx_kgtact -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_SHADOW -flags2 MF2_FOOTCLIP|MF2_PASSMOBJ - -$ MT_KNIGHTAXE -spawnstate S_SPINAXE1 -seesound 0 -deathstate S_SPINAXEX1 -deathsound sfx_hrnhit -speed 9 -radius 10 -height 8 -damage 2 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_WINDTHRUST|MF2_NOTELEPORT|MF2_THRUGHOST - -$ MT_REDAXE -spawnstate S_REDAXE1 -seesound 0 -deathstate S_REDAXEX1 -deathsound sfx_hrnhit -speed 9 -radius 10 -height 8 -damage 7 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_THRUGHOST - -S_KNIGHT_STND1 KNIG A 10 A_Look S_KNIGHT_STND2 -S_KNIGHT_STND2 KNIG B 10 A_Look S_KNIGHT_STND1 - -S_KNIGHT_WALK1 KNIG A 4 A_Chase S_KNIGHT_WALK2 -S_KNIGHT_WALK2 KNIG B 4 A_Chase S_KNIGHT_WALK3 -S_KNIGHT_WALK3 KNIG C 4 A_Chase S_KNIGHT_WALK4 -S_KNIGHT_WALK4 KNIG D 4 A_Chase S_KNIGHT_WALK1 - -S_KNIGHT_ATK1 KNIG E 10 A_FaceTarget S_KNIGHT_ATK2 -S_KNIGHT_ATK2 KNIG F 8 A_FaceTarget S_KNIGHT_ATK3 -S_KNIGHT_ATK3 KNIG G 8 A_KnightAttack S_KNIGHT_ATK4 -S_KNIGHT_ATK4 KNIG E 10 A_FaceTarget S_KNIGHT_ATK5 -S_KNIGHT_ATK5 KNIG F 8 A_FaceTarget S_KNIGHT_ATK6 -S_KNIGHT_ATK6 KNIG G 8 A_KnightAttack S_KNIGHT_WALK1 - -S_KNIGHT_PAIN1 KNIG H 3 NULL S_KNIGHT_PAIN2 -S_KNIGHT_PAIN2 KNIG H 3 A_Pain S_KNIGHT_WALK1 - -S_KNIGHT_DIE1 KNIG I 6 NULL S_KNIGHT_DIE2 -S_KNIGHT_DIE2 KNIG J 6 A_Scream S_KNIGHT_DIE3 -S_KNIGHT_DIE3 KNIG K 6 NULL S_KNIGHT_DIE4 -S_KNIGHT_DIE4 KNIG L 6 A_NoBlocking S_KNIGHT_DIE5 -S_KNIGHT_DIE5 KNIG M 6 NULL S_KNIGHT_DIE6 -S_KNIGHT_DIE6 KNIG N 6 NULL S_KNIGHT_DIE7 -S_KNIGHT_DIE7 KNIG O -1 NULL S_NULL - -S_SPINAXE1 SPAX A* 3 A_ContMobjSound S_SPINAXE2 -S_SPINAXE2 SPAX B* 3 NULL S_SPINAXE3 -S_SPINAXE3 SPAX C* 3 NULL S_SPINAXE1 -S_SPINAXEX1 SPAX D* 6 NULL S_SPINAXEX2 -S_SPINAXEX2 SPAX E* 6 NULL S_SPINAXEX3 -S_SPINAXEX3 SPAX F* 6 NULL S_NULL - -S_REDAXE1 RAXE A* 5 A_DripBlood S_REDAXE2 -S_REDAXE2 RAXE B* 5 A_DripBlood S_REDAXE1 -S_REDAXEX1 RAXE C* 6 NULL S_REDAXEX2 -S_REDAXEX2 RAXE D* 6 NULL S_REDAXEX3 -S_REDAXEX3 RAXE E* 6 NULL S_NULL - - -// -// sorcerer -// -$ MT_SORCERER1 -doomednum 7 -spawnstate S_SRCR1_LOOK1 -spawnhealth 2000 -seestate S_SRCR1_WALK1 -seesound sfx_sbtsit -attacksound sfx_sbtatk -painstate S_SRCR1_PAIN1 -painchance 56 -painsound sfx_sbtpai -meleestate 0 -missilestate S_SRCR1_ATK1 -deathstate S_SRCR1_DIE1 -deathsound sfx_sbtdth -speed 16 -radius 28 -height 100 -mass 800 -activesound sfx_sbtact -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL -flags2 MF2_FOOTCLIP|MF2_PASSMOBJ|MF2_BOSS - -$ MT_SRCRFX1 -spawnstate S_SRCRFX1_1 -seesound 0 -deathstate S_SRCRFXI1_1 -deathsound 0 -speed 20 -radius 10 -height 10 -damage 10 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FIREDAMAGE - -$ MT_SORCERER2 -spawnstate S_SOR2_LOOK1 -spawnhealth 3500 -seestate S_SOR2_WALK1 -seesound sfx_sorsit -attacksound sfx_soratk -painstate S_SOR2_PAIN1 -painchance 32 -painsound sfx_sorpai -meleestate 0 -missilestate S_SOR2_ATK1 -deathstate S_SOR2_DIE1 -deathsound 0 -speed 14 -radius 16 -height 70 -mass 300 -activesound sfx_soract -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_DROPOFF -flags2 MF2_FOOTCLIP|MF2_PASSMOBJ|MF2_BOSS - -$ MT_SOR2FX1 -spawnstate S_SOR2FX1_1 -seesound 0 -deathstate S_SOR2FXI1_1 -deathsound 0 -speed 20 -radius 10 -height 6 -damage 1 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_SOR2FXSPARK -spawnstate S_SOR2FXSPARK1 -flags MF_NOBLOCKMAP|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_CANNOTPUSH - -$ MT_SOR2FX2 -spawnstate S_SOR2FX2_1 -seesound 0 -deathstate S_SOR2FXI2_1 -deathsound 0 -speed 6 -radius 10 -height 6 -damage 10 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT - -$ MT_SOR2TELEFADE -spawnstate S_SOR2TELEFADE1 -flags MF_NOBLOCKMAP - -S_SRCR1_LOOK1 SRCR A 10 A_Look S_SRCR1_LOOK2 -S_SRCR1_LOOK2 SRCR B 10 A_Look S_SRCR1_LOOK1 - -S_SRCR1_WALK1 SRCR A 5 A_Sor1Chase S_SRCR1_WALK2 -S_SRCR1_WALK2 SRCR B 5 A_Sor1Chase S_SRCR1_WALK3 -S_SRCR1_WALK3 SRCR C 5 A_Sor1Chase S_SRCR1_WALK4 -S_SRCR1_WALK4 SRCR D 5 A_Sor1Chase S_SRCR1_WALK1 - -S_SRCR1_PAIN1 SRCR Q 6 A_Sor1Pain S_SRCR1_WALK1 - -S_SRCR1_ATK1 SRCR Q 7 A_FaceTarget S_SRCR1_ATK2 -S_SRCR1_ATK2 SRCR R 6 A_FaceTarget S_SRCR1_ATK3 -S_SRCR1_ATK3 SRCR S 10 A_Srcr1Attack S_SRCR1_WALK1 - -S_SRCR1_ATK4 SRCR S 10 A_FaceTarget S_SRCR1_ATK5 -S_SRCR1_ATK5 SRCR Q 7 A_FaceTarget S_SRCR1_ATK6 -S_SRCR1_ATK6 SRCR R 6 A_FaceTarget S_SRCR1_ATK7 -S_SRCR1_ATK7 SRCR S 10 A_Srcr1Attack S_SRCR1_WALK1 - -S_SRCR1_DIE1 SRCR E 7 NULL S_SRCR1_DIE2 -S_SRCR1_DIE2 SRCR F 7 A_Scream S_SRCR1_DIE3 -S_SRCR1_DIE3 SRCR G 7 NULL S_SRCR1_DIE4 -S_SRCR1_DIE4 SRCR H 6 NULL S_SRCR1_DIE5 -S_SRCR1_DIE5 SRCR I 6 NULL S_SRCR1_DIE6 -S_SRCR1_DIE6 SRCR J 6 NULL S_SRCR1_DIE7 -S_SRCR1_DIE7 SRCR K 6 NULL S_SRCR1_DIE8 -S_SRCR1_DIE8 SRCR L 25 A_SorZap S_SRCR1_DIE9 -S_SRCR1_DIE9 SRCR M 5 NULL S_SRCR1_DIE10 -S_SRCR1_DIE10 SRCR N 5 NULL S_SRCR1_DIE11 -S_SRCR1_DIE11 SRCR O 4 NULL S_SRCR1_DIE12 -S_SRCR1_DIE12 SRCR L 20 A_SorZap S_SRCR1_DIE13 -S_SRCR1_DIE13 SRCR M 5 NULL S_SRCR1_DIE14 -S_SRCR1_DIE14 SRCR N 5 NULL S_SRCR1_DIE15 -S_SRCR1_DIE15 SRCR O 4 NULL S_SRCR1_DIE16 -S_SRCR1_DIE16 SRCR L 12 NULL S_SRCR1_DIE17 -S_SRCR1_DIE17 SRCR P -1 A_SorcererRise S_NULL - -S_SRCRFX1_1 FX14 A* 6 NULL S_SRCRFX1_2 -S_SRCRFX1_2 FX14 B* 6 NULL S_SRCRFX1_3 -S_SRCRFX1_3 FX14 C* 6 NULL S_SRCRFX1_1 - -S_SRCRFXI1_1 FX14 D* 5 NULL S_SRCRFXI1_2 -S_SRCRFXI1_2 FX14 E* 5 NULL S_SRCRFXI1_3 -S_SRCRFXI1_3 FX14 F* 5 NULL S_SRCRFXI1_4 -S_SRCRFXI1_4 FX14 G* 5 NULL S_SRCRFXI1_5 -S_SRCRFXI1_5 FX14 H* 5 NULL S_NULL - -S_SOR2_RISE1 SOR2 A 4 NULL S_SOR2_RISE2 -S_SOR2_RISE2 SOR2 B 4 NULL S_SOR2_RISE3 -S_SOR2_RISE3 SOR2 C 4 A_SorRise S_SOR2_RISE4 -S_SOR2_RISE4 SOR2 D 4 NULL S_SOR2_RISE5 -S_SOR2_RISE5 SOR2 E 4 NULL S_SOR2_RISE6 -S_SOR2_RISE6 SOR2 F 4 NULL S_SOR2_RISE7 -S_SOR2_RISE7 SOR2 G 12 A_SorSightSnd S_SOR2_WALK1 - -S_SOR2_LOOK1 SOR2 M 10 A_Look S_SOR2_LOOK2 -S_SOR2_LOOK2 SOR2 N 10 A_Look S_SOR2_LOOK1 - -S_SOR2_WALK1 SOR2 M 4 A_Chase S_SOR2_WALK2 -S_SOR2_WALK2 SOR2 N 4 A_Chase S_SOR2_WALK3 -S_SOR2_WALK3 SOR2 O 4 A_Chase S_SOR2_WALK4 -S_SOR2_WALK4 SOR2 P 4 A_Chase S_SOR2_WALK1 - -S_SOR2_PAIN1 SOR2 Q 3 NULL S_SOR2_PAIN2 -S_SOR2_PAIN2 SOR2 Q 6 A_Pain S_SOR2_WALK1 - -S_SOR2_ATK1 SOR2 R 9 A_Srcr2Decide S_SOR2_ATK2 -S_SOR2_ATK2 SOR2 S 9 A_FaceTarget S_SOR2_ATK3 -S_SOR2_ATK3 SOR2 T 20 A_Srcr2Attack S_SOR2_WALK1 - -S_SOR2_TELE1 SOR2 L 6 NULL S_SOR2_TELE2 -S_SOR2_TELE2 SOR2 K 6 NULL S_SOR2_TELE3 -S_SOR2_TELE3 SOR2 J 6 NULL S_SOR2_TELE4 -S_SOR2_TELE4 SOR2 I 6 NULL S_SOR2_TELE5 -S_SOR2_TELE5 SOR2 H 6 NULL S_SOR2_TELE6 -S_SOR2_TELE6 SOR2 G 6 NULL S_SOR2_WALK1 - -S_SOR2_DIE1 SDTH A 8 A_Sor2DthInit S_SOR2_DIE2 -S_SOR2_DIE2 SDTH B 8 NULL S_SOR2_DIE3 -S_SOR2_DIE3 SDTH C 8 A_SorDSph S_SOR2_DIE4 -S_SOR2_DIE4 SDTH D 7 NULL S_SOR2_DIE5 -S_SOR2_DIE5 SDTH E 7 NULL S_SOR2_DIE6 -S_SOR2_DIE6 SDTH F 7 A_Sor2DthLoop S_SOR2_DIE7 -S_SOR2_DIE7 SDTH G 6 A_SorDExp S_SOR2_DIE8 -S_SOR2_DIE8 SDTH H 6 NULL S_SOR2_DIE9 -S_SOR2_DIE9 SDTH I 18 NULL S_SOR2_DIE10 -S_SOR2_DIE10 SDTH J 6 A_NoBlocking S_SOR2_DIE11 -S_SOR2_DIE11 SDTH K 6 A_SorDBon S_SOR2_DIE12 -S_SOR2_DIE12 SDTH L 6 NULL S_SOR2_DIE13 -S_SOR2_DIE13 SDTH M 6 NULL S_SOR2_DIE14 -S_SOR2_DIE14 SDTH N 6 NULL S_SOR2_DIE15 -S_SOR2_DIE15 SDTH O -1 A_BossDeath S_NULL - -S_SOR2FX1_1 FX16 A* 3 A_BlueSpark S_SOR2FX1_2 -S_SOR2FX1_2 FX16 B* 3 A_BlueSpark S_SOR2FX1_3 -S_SOR2FX1_3 FX16 C* 3 A_BlueSpark S_SOR2FX1_1 - -S_SOR2FXI1_1 FX16 G* 5 A_Explode S_SOR2FXI1_2 -S_SOR2FXI1_2 FX16 H* 5 NULL S_SOR2FXI1_3 -S_SOR2FXI1_3 FX16 I* 5 NULL S_SOR2FXI1_4 -S_SOR2FXI1_4 FX16 J* 5 NULL S_SOR2FXI1_5 -S_SOR2FXI1_5 FX16 K* 5 NULL S_SOR2FXI1_6 -S_SOR2FXI1_6 FX16 L* 5 NULL S_NULL - -S_SOR2FXSPARK1 FX16 D* 12 NULL S_SOR2FXSPARK2 -S_SOR2FXSPARK2 FX16 E* 12 NULL S_SOR2FXSPARK3 -S_SOR2FXSPARK3 FX16 F* 12 NULL S_NULL - -S_SOR2FX2_1 FX11 A* 35 NULL S_SOR2FX2_2 -S_SOR2FX2_2 FX11 A* 5 A_GenWizard S_SOR2FX2_3 -S_SOR2FX2_3 FX11 B* 5 NULL S_SOR2FX2_2 - -S_SOR2FXI2_1 FX11 C* 5 NULL S_SOR2FXI2_2 -S_SOR2FXI2_2 FX11 D* 5 NULL S_SOR2FXI2_3 -S_SOR2FXI2_3 FX11 E* 5 NULL S_SOR2FXI2_4 -S_SOR2FXI2_4 FX11 F* 5 NULL S_SOR2FXI2_5 -S_SOR2FXI2_5 FX11 G* 5 NULL S_NULL - -S_SOR2TELEFADE1 SOR2 G 8 NULL S_SOR2TELEFADE2 -S_SOR2TELEFADE2 SOR2 H 6 NULL S_SOR2TELEFADE3 -S_SOR2TELEFADE3 SOR2 I 6 NULL S_SOR2TELEFADE4 -S_SOR2TELEFADE4 SOR2 J 6 NULL S_SOR2TELEFADE5 -S_SOR2TELEFADE5 SOR2 K 6 NULL S_SOR2TELEFADE6 -S_SOR2TELEFADE6 SOR2 L 6 NULL S_NULL - - -// -// minotaur -// -$ MT_MINOTAUR -doomednum 9 -spawnstate S_MNTR_LOOK1 -spawnhealth 3000 -seestate S_MNTR_WALK1 -seesound sfx_minsit -attacksound sfx_minat1 -painstate S_MNTR_PAIN1 -painchance 25 -painsound sfx_minpai -meleestate S_MNTR_ATK1_1 -missilestate S_MNTR_ATK2_1 -deathstate S_MNTR_DIE1 -deathsound sfx_mindth -speed 16 -radius 28 -height 100 -damage 7 -mass 800 -activesound sfx_minact -flags MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL|MF_DROPOFF -flags2 MF2_FOOTCLIP|MF2_PASSMOBJ|MF2_BOSS - -$ MT_MNTRFX1 -spawnstate S_MNTRFX1_1 -seesound 0 -deathstate S_MNTRFXI1_1 -deathsound 0 -speed 20 -radius 10 -height 6 -damage 3 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FIREDAMAGE - -$ MT_MNTRFX2 -spawnstate S_MNTRFX2_1 -seesound 0 -deathstate S_MNTRFXI2_1 -deathsound sfx_phohit -speed 14 -radius 5 -height 12 -damage 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FIREDAMAGE - -$ MT_MNTRFX3 -spawnstate S_MNTRFX3_1 -seesound 0 -deathstate S_MNTRFXI2_1 -deathsound sfx_phohit -radius 8 -damage 4 -flags MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF|MF_NOGRAVITY -flags2 MF2_NOTELEPORT|MF2_FIREDAMAGE - -S_MNTR_LOOK1 MNTR A 10 A_Look S_MNTR_LOOK2 -S_MNTR_LOOK2 MNTR B 10 A_Look S_MNTR_LOOK1 - -S_MNTR_WALK1 MNTR A 5 A_Chase S_MNTR_WALK2 -S_MNTR_WALK2 MNTR B 5 A_Chase S_MNTR_WALK3 -S_MNTR_WALK3 MNTR C 5 A_Chase S_MNTR_WALK4 -S_MNTR_WALK4 MNTR D 5 A_Chase S_MNTR_WALK1 - -S_MNTR_ATK1_1 MNTR V 10 A_FaceTarget S_MNTR_ATK1_2 -S_MNTR_ATK1_2 MNTR W 7 A_FaceTarget S_MNTR_ATK1_3 -S_MNTR_ATK1_3 MNTR X 12 A_MinotaurAtk1 S_MNTR_WALK1 - -S_MNTR_ATK2_1 MNTR V 10 A_MinotaurDecide S_MNTR_ATK2_2 -S_MNTR_ATK2_2 MNTR Y 4 A_FaceTarget S_MNTR_ATK2_3 -S_MNTR_ATK2_3 MNTR Z 9 A_MinotaurAtk2 S_MNTR_WALK1 - -S_MNTR_ATK3_1 MNTR V 10 A_FaceTarget S_MNTR_ATK3_2 -S_MNTR_ATK3_2 MNTR W 7 A_FaceTarget S_MNTR_ATK3_3 -S_MNTR_ATK3_3 MNTR X 12 A_MinotaurAtk3 S_MNTR_WALK1 -S_MNTR_ATK3_4 MNTR X 12 NULL S_MNTR_ATK3_1 - -S_MNTR_ATK4_1 MNTR U 2 A_MinotaurCharge S_MNTR_ATK4_1 - -S_MNTR_PAIN1 MNTR E 3 NULL S_MNTR_PAIN2 -S_MNTR_PAIN2 MNTR E 6 A_Pain S_MNTR_WALK1 - -S_MNTR_DIE1 MNTR F 6 NULL S_MNTR_DIE2 -S_MNTR_DIE2 MNTR G 5 NULL S_MNTR_DIE3 -S_MNTR_DIE3 MNTR H 6 A_Scream S_MNTR_DIE4 -S_MNTR_DIE4 MNTR I 5 NULL S_MNTR_DIE5 -S_MNTR_DIE5 MNTR J 6 NULL S_MNTR_DIE6 -S_MNTR_DIE6 MNTR K 5 NULL S_MNTR_DIE7 -S_MNTR_DIE7 MNTR L 6 NULL S_MNTR_DIE8 -S_MNTR_DIE8 MNTR M 5 A_NoBlocking S_MNTR_DIE9 -S_MNTR_DIE9 MNTR N 6 NULL S_MNTR_DIE10 -S_MNTR_DIE10 MNTR O 5 NULL S_MNTR_DIE11 -S_MNTR_DIE11 MNTR P 6 NULL S_MNTR_DIE12 -S_MNTR_DIE12 MNTR Q 5 NULL S_MNTR_DIE13 -S_MNTR_DIE13 MNTR R 6 NULL S_MNTR_DIE14 -S_MNTR_DIE14 MNTR S 5 NULL S_MNTR_DIE15 -S_MNTR_DIE15 MNTR T -1 A_BossDeath S_NULL - -S_MNTRFX1_1 FX12 A* 6 NULL S_MNTRFX1_2 -S_MNTRFX1_2 FX12 B* 6 NULL S_MNTRFX1_1 - -S_MNTRFXI1_1 FX12 C* 5 NULL S_MNTRFXI1_2 -S_MNTRFXI1_2 FX12 D* 5 NULL S_MNTRFXI1_3 -S_MNTRFXI1_3 FX12 E* 5 NULL S_MNTRFXI1_4 -S_MNTRFXI1_4 FX12 F* 5 NULL S_MNTRFXI1_5 -S_MNTRFXI1_5 FX12 G* 5 NULL S_MNTRFXI1_6 -S_MNTRFXI1_6 FX12 H* 5 NULL S_NULL - -S_MNTRFX2_1 FX13 A 2 A_MntrFloorFire S_MNTRFX2_1 -S_MNTRFXI2_1 FX13 I* 4 A_Explode S_MNTRFXI2_2 -S_MNTRFXI2_2 FX13 J* 4 NULL S_MNTRFXI2_3 -S_MNTRFXI2_3 FX13 K* 4 NULL S_MNTRFXI2_4 -S_MNTRFXI2_4 FX13 L* 4 NULL S_MNTRFXI2_5 -S_MNTRFXI2_5 FX13 M* 4 NULL S_NULL - -S_MNTRFX3_1 FX13 D* 4 NULL S_MNTRFX3_2 -S_MNTRFX3_2 FX13 C* 4 NULL S_MNTRFX3_3 -S_MNTRFX3_3 FX13 B* 5 NULL S_MNTRFX3_4 -S_MNTRFX3_4 FX13 C* 5 NULL S_MNTRFX3_5 -S_MNTRFX3_5 FX13 D* 5 NULL S_MNTRFX3_6 -S_MNTRFX3_6 FX13 E* 5 NULL S_MNTRFX3_7 -S_MNTRFX3_7 FX13 F* 4 NULL S_MNTRFX3_8 -S_MNTRFX3_8 FX13 G* 4 NULL S_MNTRFX3_9 -S_MNTRFX3_9 FX13 H* 4 NULL S_NULL - - -// -// keys -// -$ MT_AKYY doomednum 73 spawnstate S_AKYY1 flags MF_SPECIAL|MF_NOTDMATCH -$ MT_BKYY doomednum 79 spawnstate S_BKYY1 flags MF_SPECIAL|MF_NOTDMATCH -$ MT_CKEY doomednum 80 spawnstate S_CKYY1 flags MF_SPECIAL|MF_NOTDMATCH - -S_AKYY1 AKYY A* 3 NULL S_AKYY2 -S_AKYY2 AKYY B* 3 NULL S_AKYY3 -S_AKYY3 AKYY C* 3 NULL S_AKYY4 -S_AKYY4 AKYY D* 3 NULL S_AKYY5 -S_AKYY5 AKYY E* 3 NULL S_AKYY6 -S_AKYY6 AKYY F* 3 NULL S_AKYY7 -S_AKYY7 AKYY G* 3 NULL S_AKYY8 -S_AKYY8 AKYY H* 3 NULL S_AKYY9 -S_AKYY9 AKYY I* 3 NULL S_AKYY10 -S_AKYY10 AKYY J* 3 NULL S_AKYY1 - -S_BKYY1 BKYY A* 3 NULL S_BKYY2 -S_BKYY2 BKYY B* 3 NULL S_BKYY3 -S_BKYY3 BKYY C* 3 NULL S_BKYY4 -S_BKYY4 BKYY D* 3 NULL S_BKYY5 -S_BKYY5 BKYY E* 3 NULL S_BKYY6 -S_BKYY6 BKYY F* 3 NULL S_BKYY7 -S_BKYY7 BKYY G* 3 NULL S_BKYY8 -S_BKYY8 BKYY H* 3 NULL S_BKYY9 -S_BKYY9 BKYY I* 3 NULL S_BKYY10 -S_BKYY10 BKYY J* 3 NULL S_BKYY1 - -S_CKYY1 CKYY A* 3 NULL S_CKYY2 -S_CKYY2 CKYY B* 3 NULL S_CKYY3 -S_CKYY3 CKYY C* 3 NULL S_CKYY4 -S_CKYY4 CKYY D* 3 NULL S_CKYY5 -S_CKYY5 CKYY E* 3 NULL S_CKYY6 -S_CKYY6 CKYY F* 3 NULL S_CKYY7 -S_CKYY7 CKYY G* 3 NULL S_CKYY8 -S_CKYY8 CKYY H* 3 NULL S_CKYY9 -S_CKYY9 CKYY I* 3 NULL S_CKYY1 - - -// -// ammo -// -$ MT_AMGWNDWIMPY -doomednum 10 -spawnstate S_AMG1 -spawnhealth 10 -flags MF_SPECIAL - -$ MT_AMGWNDHEFTY -doomednum 12 -spawnstate S_AMG2_1 -spawnhealth 50 -flags MF_SPECIAL - -$ MT_AMMACEWIMPY -doomednum 13 -spawnstate S_AMM1 -spawnhealth 20 -flags MF_SPECIAL - -$ MT_AMMACEHEFTY -doomednum 16 -spawnstate S_AMM2 -spawnhealth 100 -flags MF_SPECIAL - -$ MT_AMCBOWWIMPY -doomednum 18 -spawnstate S_AMC1 -spawnhealth 5 -flags MF_SPECIAL - -$ MT_AMCBOWHEFTY -doomednum 19 -spawnstate S_AMC2_1 -spawnhealth 20 -flags MF_SPECIAL - -$ MT_AMSKRDWIMPY -doomednum 20 -spawnstate S_AMS1_1 -spawnhealth 20 -flags MF_SPECIAL - -$ MT_AMSKRDHEFTY -doomednum 21 -spawnstate S_AMS2_1 -spawnhealth 100 -flags MF_SPECIAL - -$ MT_AMPHRDWIMPY -doomednum 22 -spawnstate S_AMP1_1 -spawnhealth 1 -flags MF_SPECIAL - -$ MT_AMPHRDHEFTY -doomednum 23 -spawnstate S_AMP2_1 -spawnhealth 10 -flags MF_SPECIAL - -$ MT_AMBLSRWIMPY -doomednum 54 -spawnstate S_AMB1_1 -spawnhealth 10 -flags MF_SPECIAL - -$ MT_AMBLSRHEFTY -doomednum 55 -spawnstate S_AMB2_1 -spawnhealth 25 -flags MF_SPECIAL - -S_AMG1 AMG1 A -1 NULL S_NULL - -S_AMG2_1 AMG2 A 4 NULL S_AMG2_2 -S_AMG2_2 AMG2 B 4 NULL S_AMG2_3 -S_AMG2_3 AMG2 C 4 NULL S_AMG2_1 - -S_AMM1 AMM1 A -1 NULL S_NULL -S_AMM2 AMM2 A -1 NULL S_NULL - -S_AMC1 AMC1 A -1 NULL S_NULL -S_AMC2_1 AMC2 A 5 NULL S_AMC2_2 -S_AMC2_2 AMC2 B 5 NULL S_AMC2_3 -S_AMC2_3 AMC2 C 5 NULL S_AMC2_1 - -S_AMS1_1 AMS1 A 5 NULL S_AMS1_2 -S_AMS1_2 AMS1 B 5 NULL S_AMS1_1 -S_AMS2_1 AMS2 A 5 NULL S_AMS2_2 -S_AMS2_2 AMS2 B 5 NULL S_AMS2_1 - -S_AMP1_1 AMP1 A 4 NULL S_AMP1_2 -S_AMP1_2 AMP1 B 4 NULL S_AMP1_3 -S_AMP1_3 AMP1 C 4 NULL S_AMP1_1 -S_AMP2_1 AMP2 A 4 NULL S_AMP2_2 -S_AMP2_2 AMP2 B 4 NULL S_AMP2_3 -S_AMP2_3 AMP2 C 4 NULL S_AMP2_1 - -S_AMB1_1 AMB1 A 4 NULL S_AMB1_2 -S_AMB1_2 AMB1 B 4 NULL S_AMB1_3 -S_AMB1_3 AMB1 C 4 NULL S_AMB1_1 -S_AMB2_1 AMB2 A 4 NULL S_AMB2_2 -S_AMB2_2 AMB2 B 4 NULL S_AMB2_3 -S_AMB2_3 AMB2 C 4 NULL S_AMB2_1 - - -// -// sounds -// -$ MT_SOUNDWIND -doomednum 42 -spawnstate S_SND_WIND -flags MF_NOBLOCKMAP|MF_NOSECTOR - -$ MT_SOUNDWATERFALL -doomednum 41 -spawnstate S_SND_WATERFALL -flags MF_NOBLOCKMAP|MF_NOSECTOR - -S_SND_WIND AMG1 A 100 A_ESound S_SND_WIND -S_SND_WATERFALL AMG1 A 85 A_ESound S_SND_WATERFALL diff --git a/code/v_draw.c b/code/v_draw.c index 30f90823f0..c39cc95f19 100644 --- a/code/v_draw.c +++ b/code/v_draw.c @@ -134,8 +134,8 @@ void V_DrawLucentPatchP (byte *source, byte *dest, int count, int pitch) fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - *dest = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + *dest = RGB32k[0][0][fg & (fg>>15)]; dest += pitch; } while (--count); } @@ -161,8 +161,8 @@ void V_DrawLucentPatchSP (byte *source, byte *dest, int count, int pitch, int yi fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - *dest = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + *dest = RGB32k[0][0][fg & (fg>>15)]; dest += pitch; c += yinc; } while (--count); @@ -214,8 +214,8 @@ void V_DrawTlatedLucentPatchP (byte *source, byte *dest, int count, int pitch) fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - *dest = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + *dest = RGB32k[0][0][fg & (fg>>15)]; dest += pitch; } while (--count); } @@ -242,8 +242,8 @@ void V_DrawTlatedLucentPatchSP (byte *source, byte *dest, int count, int pitch, fg = fg2rgb[fg]; bg = bg2rgb[bg]; - fg = (fg+bg) | 0xf07c3e1f; - *dest = RGB8k[0][0][(fg>>5) & (fg>>19)]; + fg = (fg+bg) | 0x1f07c1f; + *dest = RGB32k[0][0][fg & (fg>>15)]; dest += pitch; c += yinc; } while (--count); @@ -290,8 +290,8 @@ void V_DrawColorLucentPatchP (byte *source, byte *dest, int count, int pitch) do { unsigned int bg = bg2rgb[*dest]; - bg = (bg+bg) | 0xf07c3e1f; - *dest = RGB8k[0][0][(bg>>5) & (bg>>19)]; + bg = (bg+bg) | 0x1f07c1f; + *dest = RGB32k[0][0][bg & (bg>>15)]; dest += pitch; } while (--count); } diff --git a/code/win32/I_music.c b/code/win32/I_music.c index ab993869c3..5b64ff39e3 100644 --- a/code/win32/I_music.c +++ b/code/win32/I_music.c @@ -368,11 +368,13 @@ void I_PlaySong (int handle, int _looping) UnprepareMIDIHeaders (info); midiStreamClose (info->midiStream); info->midiStream = NULL; + info->status = STATE_STOPPED; } } else { UnprepareMIDIHeaders (info); midiStreamClose (info->midiStream); info->midiStream = NULL; + info->status = STATE_STOPPED; } } else { MCIError (res, "opening MIDI stream"); @@ -380,6 +382,10 @@ void I_PlaySong (int handle, int _looping) Printf (PRINT_HIGH, "Trying again with MIDI mapper\n"); SetCVarFloat (snd_mididevice, -1.0f); } + else + { + info->status = STATE_STOPPED; + } } break; @@ -391,7 +397,10 @@ void I_PlaySong (int handle, int _looping) } break; } - currSong = info; + if (info->status == STATE_PLAYING) + currSong = info; + else + currSong = NULL; } void I_PauseSong (int handle) diff --git a/code/win32/I_sound.c b/code/win32/I_sound.c index bcb8afa4c5..95bc778d02 100644 --- a/code/win32/I_sound.c +++ b/code/win32/I_sound.c @@ -555,6 +555,7 @@ void I_InitSound (void) (DLGPROC)InitBoxCallback)) { case IDC_NOSOUND: MIDASsetOption (MIDAS_OPTION_FORCE_NO_SOUND, TRUE); + nosound = true; break; case IDQUIT: diff --git a/code/win32/zdoom.rc b/code/win32/zdoom.rc index 3c10614963..c5abeb6837 100644 --- a/code/win32/zdoom.rc +++ b/code/win32/zdoom.rc @@ -100,8 +100,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,17,2,0 - PRODUCTVERSION 1,17,2,0 + FILEVERSION 1,17,3,0 + PRODUCTVERSION 1,17,3,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -119,13 +119,13 @@ BEGIN VALUE "Comments", "Thanks to id Software for creating DOOM and then releasing the source code. Thanks also to TeamTNT for creating BOOM, which ZDoom is partially based on.\0" VALUE "CompanyName", " \0" VALUE "FileDescription", "ZDoom\0" - VALUE "FileVersion", "1.17b\0" + VALUE "FileVersion", "1.17c\0" VALUE "InternalName", "ZDoom\0" VALUE "LegalCopyright", "Copyright © 1999, id Software & Randy Heit\0" VALUE "LegalTrademarks", "Doom® is a Registered Trademark of id Software, Inc.\0" VALUE "OriginalFilename", "zdoom.exe\0" VALUE "ProductName", "ZDoom\0" - VALUE "ProductVersion", "1.17b\0" + VALUE "ProductVersion", "1.17c\0" END END BLOCK "VarFileInfo" diff --git a/ptc.diff b/ptc.diff deleted file mode 100644 index b7de38d860..0000000000 --- a/ptc.diff +++ /dev/null @@ -1,3322 +0,0 @@ -diff -c -r -d ptcnew/source/GLOBALS.H ptc/source/GLOBALS.H -*** ptcnew/source/GLOBALS.H Thu May 28 20:03:10 1998 ---- ptc/source/GLOBALS.H Wed Dec 16 17:52:16 1998 -*************** -*** 37,42 **** ---- 37,43 ---- - // output types - const FULLSCREEN = 40; - const WINDOWED = 41; -+ const FSDBLBUFF = 42; // [RH] Fullscreen double-buffering - - // coordinate systems - const ABSOLUTE = 50; -*************** -*** 123,128 **** ---- 124,134 ---- - - - -+ // [RH] -+ #if defined(_WIN32) && defined (_DEBUG) -+ #define HAVEDPRINTF -+ void Dprintf (char *fmt, ...); -+ #endif - - - -diff -c -r -d ptcnew/source/IDIRECTX.CPP ptc/source/IDIRECTX.CPP -*** ptcnew/source/IDIRECTX.CPP Mon Jun 08 13:21:36 1998 ---- ptc/source/IDIRECTX.CPP Wed Dec 16 17:52:12 1998 -*************** -*** 23,30 **** - IDirectX::IDirectX(WINDOW window) - :IWin32(window) - { -! // debug -! //printf("IDirectX::IDirectX\n"); - - // clear status - Status=0; ---- 23,32 ---- - IDirectX::IDirectX(WINDOW window) - :IWin32(window) - { -! // debug -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::IDirectX\n"); -! #endif - - // clear status - Status=0; -*************** -*** 34,40 **** - Frequency=UNKNOWN; - PrimaryFlag=0; - Primary=NULL; -! PrimaryBackup=NULL; - - // directx data - lpDD=NULL; ---- 36,42 ---- - Frequency=UNKNOWN; - PrimaryFlag=0; - Primary=NULL; -! PrimaryBackup=NULL; - - // directx data - lpDD=NULL; -*************** -*** 42,52 **** - DirectDrawInstance=NULL; - - // initialize directdraw -! if (!InitDirectDraw()) -! { -! //printf("InitDirectDraw failed\n"); -! return; -! } - - // get display format - ---- 44,56 ---- - DirectDrawInstance=NULL; - - // initialize directdraw -! if (!InitDirectDraw()) -! { -! #ifdef HAVEDPRINTF -! Dprintf("InitDirectDraw failed\n"); -! #endif -! return; -! } - - // get display format - -*************** -*** 56,63 **** - // register window classes - RegisterWindowClasses(); - -! // setup mode list -! SetupModeList(); - - // windowed display mode - } ---- 60,67 ---- - // register window classes - RegisterWindowClasses(); - -! // setup mode list -! SetupModeList(); - - // windowed display mode - } -*************** -*** 65,71 **** - // success - Status=1; - -! //printf("IDirectX::IDirectX ok\n"); - - // set process priority to high - SetPriorityClass(GetCurrentProcess(),HIGH_PRIORITY_CLASS); ---- 69,77 ---- - // success - Status=1; - -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::IDirectX ok\n"); -! #endif - - // set process priority to high - SetPriorityClass(GetCurrentProcess(),HIGH_PRIORITY_CLASS); -*************** -*** 115,123 **** - - int IDirectX::SetMode(int x,int y,int id,int output,int frequency,int layout) - { -! // debug -! //printf("IDirectX::SetMode\n"); -! - // DIRECT -> VIRTUAL32 - if (id==DIRECT) id=VIRTUAL32; - ---- 121,130 ---- - - int IDirectX::SetMode(int x,int y,int id,int output,int frequency,int layout) - { -! // debug -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::SetMode\n"); -! #endif - // DIRECT -> VIRTUAL32 - if (id==DIRECT) id=VIRTUAL32; - -*************** -*** 125,134 **** - if (id==INDEXED) id=VIRTUAL8; - - // try modeset from virtual mode / bits per pixel -! if (InitDisplay(x,y,id,layout,frequency,layout)) return 1; - - // attempt modeset from format id -! if (InitDisplay(x,y,FORMAT(id),layout,frequency,layout)) return 1; - - // failure - return 0; ---- 132,141 ---- - if (id==INDEXED) id=VIRTUAL8; - - // try modeset from virtual mode / bits per pixel -! if (InitDisplay(x,y,id,output/*[RH] layout*/,frequency,layout)) return 1; - - // attempt modeset from format id -! if (InitDisplay(x,y,FORMAT(id),output/*[RH] layout*/,frequency,layout)) return 1; - - // failure - return 0; -*************** -*** 137,152 **** - - int IDirectX::SetMode(int x,int y,FORMAT const &format,int output,int frequency,int layout) - { -! // debug -! //printf("IDirectX::SetMode\n"); -! - // initialize display - if (InitDisplay(x,y,format,output,frequency,layout)) -! { -! //printf("IDirectX::SetMode ok\n"); -! return 1; -! } -! else return 0; - } - - ---- 144,162 ---- - - int IDirectX::SetMode(int x,int y,FORMAT const &format,int output,int frequency,int layout) - { -! // debug -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::SetMode\n"); -! #endif - // initialize display - if (InitDisplay(x,y,format,output,frequency,layout)) -! { -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::SetMode ok\n"); -! #endif -! return 1; -! } -! else return 0; - } - - -*************** -*** 196,202 **** - // grab primary surface palette object - HRESULT result=~DD_OK; - LPDIRECTDRAWPALETTE lpDDPalette=NULL; -! if (surface->lpDDS2) result=surface->lpDDS2->GetPalette(&lpDDPalette); - else if (surface->lpDDS) result=surface->lpDDS->GetPalette(&lpDDPalette); - else goto DONE; - ---- 206,213 ---- - // grab primary surface palette object - HRESULT result=~DD_OK; - LPDIRECTDRAWPALETTE lpDDPalette=NULL; -! if (surface->lpFDDS) result=surface->lpFDDS->GetPalette(&lpDDPalette); -! else if (surface->lpDDS2) result=surface->lpDDS2->GetPalette(&lpDDPalette); - else if (surface->lpDDS) result=surface->lpDDS->GetPalette(&lpDDPalette); - else goto DONE; - -*************** -*** 204,211 **** - if (result==DDERR_NOPALETTEATTACHED) - { - // debug -! //printf("no palette attached: creating new lpDDPalette\n"); -! - // create palette object - if (lpDD2) - { ---- 215,223 ---- - if (result==DDERR_NOPALETTEATTACHED) - { - // debug -! #ifdef HAVEDPRINTF -! Dprintf("no palette attached: creating new lpDDPalette\n"); -! #endif - // create palette object - if (lpDD2) - { -*************** -*** 213,219 **** - result=lpDD2->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256,(LPPALETTEENTRY)data,&lpDDPalette,NULL); - if (result!=DD_OK) - { -! //printf("lpDD2->CreatePalette failed\n"); - goto DONE; - } - } ---- 225,233 ---- - result=lpDD2->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256,(LPPALETTEENTRY)data,&lpDDPalette,NULL); - if (result!=DD_OK) - { -! #ifdef HAVEDPRINTF -! Dprintf("lpDD2->CreatePalette failed\n"); -! #endif - goto DONE; - } - } -*************** -*** 223,242 **** - result=lpDD->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256,(LPPALETTEENTRY)data,&lpDDPalette,NULL); - if (result!=DD_OK) - { -! //printf("lpDD->CreatePalette failed\n"); - goto DONE; - } - } - - // attach palette object to primary surface - result=~DD_OK; -! if (surface->lpDDS2) result=surface->lpDDS2->SetPalette(lpDDPalette); - else if (surface->lpDDS) result=surface->lpDDS->SetPalette(lpDDPalette); - - // check result - if (result!=DD_OK) - { -! //printf("failed to attach palette to primary surface\n"); - goto DONE; - } - } ---- 237,261 ---- - result=lpDD->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256,(LPPALETTEENTRY)data,&lpDDPalette,NULL); - if (result!=DD_OK) - { -! #ifdef HAVEDPRINTF -! Dprintf("lpDD->CreatePalette failed\n"); -! #endif - goto DONE; - } - } - - // attach palette object to primary surface - result=~DD_OK; -! if (surface->lpFDDS) result=surface->lpFDDS->SetPalette(lpDDPalette); -! else if (surface->lpDDS2) result=surface->lpDDS2->SetPalette(lpDDPalette); - else if (surface->lpDDS) result=surface->lpDDS->SetPalette(lpDDPalette); - - // check result - if (result!=DD_OK) - { -! #ifdef HAVEDPRINTF -! Dprintf("failed to attach palette to primary surface\n"); -! #endif - goto DONE; - } - } -*************** -*** 246,255 **** - result=lpDDPalette->SetEntries(0,0,256,(LPPALETTEENTRY)data); - if (result!=DD_OK) goto DONE; - -! // update primary palette -! PrimaryPalette=palette; - -! // success - success=1; - } - ---- 265,274 ---- - result=lpDDPalette->SetEntries(0,0,256,(LPPALETTEENTRY)data); - if (result!=DD_OK) goto DONE; - -! // update primary palette -! PrimaryPalette=palette; - -! // success! - success=1; - } - -*************** -*** 272,278 **** - // check primary surface - if (!Primary) - { -! //printf("bad primary\n"); - goto DONE; - } - ---- 291,299 ---- - // check primary surface - if (!Primary) - { -! #ifdef HAVEDPRINTF -! Dprintf("bad primary\n"); -! #endif - goto DONE; - } - -*************** -*** 280,286 **** - SURFACE *surface=(SURFACE*)Primary->InternalSurface; - if (!surface) - { -! //printf("bad internal surface\n"); - goto DONE; - } - ---- 301,309 ---- - SURFACE *surface=(SURFACE*)Primary->InternalSurface; - if (!surface) - { -! #ifdef HAVEDPRINTF -! Dprintf("bad internal surface\n"); -! #endif - goto DONE; - } - -*************** -*** 291,297 **** - else if (surface->lpDDS) result=surface->lpDDS->GetPalette(&lpDDPalette); - if (result!=DD_OK) - { -! //printf("GetPalette failed\n"); - goto DONE; - } - ---- 314,322 ---- - else if (surface->lpDDS) result=surface->lpDDS->GetPalette(&lpDDPalette); - if (result!=DD_OK) - { -! #ifdef HAVEDPRINTF -! Dprintf("GetPalette failed\n"); -! #endif - goto DONE; - } - -*************** -*** 299,305 **** - uint *data=(uint*)palette.Lock(); - if (!data) - { -! //printf("bad palette lock\n"); - goto DONE; - } - ---- 324,332 ---- - uint *data=(uint*)palette.Lock(); - if (!data) - { -! #ifdef HAVEDPRINTF -! Dprintf("bad palette lock\n"); -! #endif - goto DONE; - } - -*************** -*** 307,313 **** - result=lpDDPalette->GetEntries(0,0,256,(LPPALETTEENTRY)data); - if (result!=DD_OK) - { -! //printf("lpDDPalette->GetEntries failed\n"); - goto DONE; - } - ---- 334,342 ---- - result=lpDDPalette->GetEntries(0,0,256,(LPPALETTEENTRY)data); - if (result!=DD_OK) - { -! #ifdef HAVEDPRINTF -! Dprintf("lpDDPalette->GetEntries failed\n"); -! #endif - goto DONE; - } - -*************** -*** 523,534 **** - - IDirectX::SURFACE::SURFACE(IDirectX &i,int &width,int &height,FORMAT &format,int &type,int &orientation,int &advance,int &layout) - { -! // debug -! //printf("IDirectX::SURFACE::SURFACE\n"); -! - // defaults - Buffer=NULL; -! lpDDS=NULL; - lpDDS2=NULL; - Count=0; - Primary=0; ---- 552,565 ---- - - IDirectX::SURFACE::SURFACE(IDirectX &i,int &width,int &height,FORMAT &format,int &type,int &orientation,int &advance,int &layout) - { -! // debug -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::SURFACE::SURFACE\n"); -! #endif - // defaults - Buffer=NULL; -! lpFDDS=NULL; -! lpDDS=NULL; - lpDDS2=NULL; - Count=0; - Primary=0; -*************** -*** 539,549 **** - // check parameters - if ((width<=0 || height<=0) || (type!=SYSTEM && type!=VIDEO && type!=OFFSCREEN && type!=DEFAULT) || - (orientation!=TOPDOWN && orientation!=DEFAULT) || -! (advance!=DEFAULT && advance<0) || (layout!=LINEAR && layout!=DEFAULT)) -! { -! //printf("bad parameters\n"); -! return; -! } - - // setup new type - int new_type=type; ---- 570,582 ---- - // check parameters - if ((width<=0 || height<=0) || (type!=SYSTEM && type!=VIDEO && type!=OFFSCREEN && type!=DEFAULT) || - (orientation!=TOPDOWN && orientation!=DEFAULT) || -! (advance!=DEFAULT && advance<0) || (layout!=LINEAR && layout!=DEFAULT)) -! { -! #ifdef HAVEDPRINTF -! Dprintf("bad parameters\n"); -! #endif -! return; -! } - - // setup new type - int new_type=type; -*************** -*** 564,641 **** - // setup surface descriptor - if (new_type==SYSTEM) - { -! // check pixel format -! if (!format.ok() || (format.type==DIRECT && format.model!=RGBA)) -! { -! //printf("bad color model\n"); -! return; -! } - -! // setup surface format information -! i.Translate(format,desc.ddpfPixelFormat); - - // system surface - desc.dwFlags=DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT; -! desc.ddsCaps.dwCaps=DDSCAPS_SYSTEMMEMORY; - desc.dwWidth=width; - desc.dwHeight=height; - } - else if (new_type==VIDEO) - { - // check primary flag -! if (i.PrimaryFlag) - { - // primary surface - desc.dwFlags=DDSD_CAPS; - desc.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE; // todo: handle primary in system memory on some cards? -! desc.dwWidth=width; -! desc.dwHeight=height; - - // set primary - Primary=1; - } - else - { - // VIDEO surface -! //printf("VIDEO surfaces are not supported\n"); - return; - } - } - - // create directdraw surface - HRESULT result=~DD_OK; - if (i.lpDD2) result=i.lpDD2->CreateSurface(&desc,&lpDDS,NULL); - else if (i.lpDD) result=i.lpDD->CreateSurface(&desc,&lpDDS,NULL); - -! /* - // print error infomation - switch (result) - { -! case DDERR_INCOMPATIBLEPRIMARY: printf("DDERR_INCOMPATIBLEPRIMARY\n"); break; -! case DDERR_INVALIDCAPS: printf("DDERR_INVALIDCAPS\n"); break; -! case DDERR_INVALIDOBJECT: printf("DDERR_INVALIDOBJECT\n"); break; -! case DDERR_INVALIDPARAMS: printf("DDERR_INVALIDPARAMS\n"); break; -! case DDERR_INVALIDPIXELFORMAT: printf("DDERR_INVALIDPIXELFORMAT\n"); break; -! case DDERR_NOALPHAHW: printf("DDERR_NOALPHAHW\n"); break; -! case DDERR_NOCOOPERATIVELEVELSET: printf("DDERR_NOCOOPERATIVELEVELSET\n"); break; -! case DDERR_NODIRECTDRAWHW: printf("DDERR_NODIRECTDRAWHW\n"); break; -! case DDERR_NOEMULATION: printf("DDERR_NOEMULATION\n"); break; -! case DDERR_NOEXCLUSIVEMODE: printf("DDERR_NOEXCLUSIVEMODE\n"); break; -! case DDERR_NOFLIPHW: printf("DDERR_NOFLIPHW\n"); break; -! case DDERR_NOMIPMAPHW: printf("DDERR_NOMIPMAPHW\n"); break; -! case DDERR_NOZBUFFERHW: printf("DDERR_NOZBUFFERHW\n"); break; -! case DDERR_OUTOFMEMORY: printf("DDERR_OUTOFMEMORY\n"); break; -! case DDERR_OUTOFVIDEOMEMORY: printf("DDERR_OUTOFVIDEOMEMORY\n"); break; -! case DDERR_PRIMARYSURFACEALREADYEXISTS: printf("DDERR_PRIMARYSURFACEALREADYEXISTS\n"); break; -! case DDERR_UNSUPPORTEDMODE: printf("DDERR_UNSUPPORTEDMODE\n"); break; - } -! */ - - // check result - if (result!=DD_OK) - { - // failure -! //printf("result!=DD_OK\n"); - lpDDS=NULL; - return; - } ---- 597,702 ---- - // setup surface descriptor - if (new_type==SYSTEM) - { -! // check pixel format -! if (!format.ok() || (format.type==DIRECT && format.model!=RGBA)) -! { -! #ifdef HAVEDPRINTF -! Dprintf("bad color model\n"); -! #endif -! return; -! } - -! // setup surface format information -! i.Translate(format,desc.ddpfPixelFormat); - - // system surface - desc.dwFlags=DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT; -! desc.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN|DDSCAPS_SYSTEMMEMORY; - desc.dwWidth=width; - desc.dwHeight=height; - } - else if (new_type==VIDEO) - { - // check primary flag -! if (i.PrimaryFlag == 1) - { - // primary surface - desc.dwFlags=DDSD_CAPS; - desc.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE; // todo: handle primary in system memory on some cards? -! // desc.dwWidth=width; -! // desc.dwHeight=height; - - // set primary - Primary=1; - } -+ // [RH] -+ else if (i.PrimaryFlag == 2) -+ { -+ // primary surface -+ desc.dwFlags=DDSD_CAPS|DDSD_BACKBUFFERCOUNT; -+ desc.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_COMPLEX; -+ desc.dwBackBufferCount = 1; -+ // desc.dwWidth=width; -+ // desc.dwHeight=height; -+ -+ // set primary -+ Primary=1; -+ } - else - { - // VIDEO surface -! #ifdef HAVEDPRINTF -! Dprintf("VIDEO surfaces are not supported\n"); -! #endif - return; - } - } - -+ // setup surface format information -+ if (!i.Translate(format,desc.ddpfPixelFormat)) -+ { -+ #ifdef HAVEDPRINTF -+ Dprintf ("Pixel format translation failed\n"); -+ #endif -+ desc.dwFlags &= ~DDSD_PIXELFORMAT; -+ } -+ - // create directdraw surface - HRESULT result=~DD_OK; - if (i.lpDD2) result=i.lpDD2->CreateSurface(&desc,&lpDDS,NULL); - else if (i.lpDD) result=i.lpDD->CreateSurface(&desc,&lpDDS,NULL); - -! #ifdef HAVEDPRINTF - // print error infomation - switch (result) - { -! case DDERR_INCOMPATIBLEPRIMARY: Dprintf("DDERR_INCOMPATIBLEPRIMARY\n"); break; -! case DDERR_INVALIDCAPS: Dprintf("DDERR_INVALIDCAPS\n"); break; -! case DDERR_INVALIDOBJECT: Dprintf("DDERR_INVALIDOBJECT\n"); break; -! case DDERR_INVALIDPARAMS: Dprintf("DDERR_INVALIDPARAMS\n"); break; -! case DDERR_INVALIDPIXELFORMAT: Dprintf("DDERR_INVALIDPIXELFORMAT\n"); break; -! case DDERR_NOALPHAHW: Dprintf("DDERR_NOALPHAHW\n"); break; -! case DDERR_NOCOOPERATIVELEVELSET: Dprintf("DDERR_NOCOOPERATIVELEVELSET\n"); break; -! case DDERR_NODIRECTDRAWHW: Dprintf("DDERR_NODIRECTDRAWHW\n"); break; -! case DDERR_NOEMULATION: Dprintf("DDERR_NOEMULATION\n"); break; -! case DDERR_NOEXCLUSIVEMODE: Dprintf("DDERR_NOEXCLUSIVEMODE\n"); break; -! case DDERR_NOFLIPHW: Dprintf("DDERR_NOFLIPHW\n"); break; -! case DDERR_NOMIPMAPHW: Dprintf("DDERR_NOMIPMAPHW\n"); break; -! case DDERR_NOZBUFFERHW: Dprintf("DDERR_NOZBUFFERHW\n"); break; -! case DDERR_OUTOFMEMORY: Dprintf("DDERR_OUTOFMEMORY\n"); break; -! case DDERR_OUTOFVIDEOMEMORY: Dprintf("DDERR_OUTOFVIDEOMEMORY\n"); break; -! case DDERR_PRIMARYSURFACEALREADYEXISTS: Dprintf("DDERR_PRIMARYSURFACEALREADYEXISTS\n"); break; -! case DDERR_UNSUPPORTEDMODE: Dprintf("DDERR_UNSUPPORTEDMODE\n"); break; - } -! #endif - - // check result - if (result!=DD_OK) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf("result!=DD_OK\n"); -! #endif - lpDDS=NULL; - return; - } -*************** -*** 645,651 **** - if (lpDDS->GetSurfaceDesc(&desc)!=DD_OK) - { - // failure -! //printf("couldnt get surface descriptor\n"); - if (lpDDS) lpDDS->Release(); - lpDDS=NULL; - return; ---- 706,714 ---- - if (lpDDS->GetSurfaceDesc(&desc)!=DD_OK) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf("couldnt get surface descriptor\n"); -! #endif - if (lpDDS) lpDDS->Release(); - lpDDS=NULL; - return; -*************** -*** 658,664 **** - if (lpDDS->GetPixelFormat(&ddpf)!=DD_OK) - { - // failure -! //printf("lpDDS->GetPixelFormat failed\n"); - lpDDS->Release(); - lpDDS=NULL; - return; ---- 721,729 ---- - if (lpDDS->GetPixelFormat(&ddpf)!=DD_OK) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf("lpDDS->GetPixelFormat failed\n"); -! #endif - lpDDS->Release(); - lpDDS=NULL; - return; -*************** -*** 668,674 **** - if (!i.Translate(ddpf,format)) - { - // failure -! //printf("format translation failed\n"); - lpDDS->Release(); - lpDDS=NULL; - return; ---- 733,741 ---- - if (!i.Translate(ddpf,format)) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf("format translation failed\n"); -! #endif - lpDDS->Release(); - lpDDS=NULL; - return; -*************** -*** 676,694 **** - - // calculate directx advance - int directx_advance=desc.lPitch-width*format.bytes; -! //printf("directx_advance=%d\n",directx_advance); - - // check directx advance against requested advance - if (directx_advance!=new_advance && new_advance==DEFAULT) new_advance=directx_advance; - else - { - // advance doesnt match -! //printf("advance doesnt match\n"); - if (lpDDS) lpDDS->Release(); - lpDDS=NULL; - return; - } - - // setup IID_IDirectDrawSurface2 - GUID IID_IDirectDrawSurface2; - IID_IDirectDrawSurface2.Data1=1468029061; ---- 743,796 ---- - - // calculate directx advance - int directx_advance=desc.lPitch-width*format.bytes; -! #ifdef HAVEDPRINTF -! Dprintf("directx_advance=%d\n",directx_advance); -! #endif - - // check directx advance against requested advance - if (directx_advance!=new_advance && new_advance==DEFAULT) new_advance=directx_advance; - else - { - // advance doesnt match -! #ifdef HAVEDPRINTF -! Dprintf("advance doesnt match\n"); -! #endif - if (lpDDS) lpDDS->Release(); - lpDDS=NULL; - return; - } - -+ // [RH] -+ if (i.PrimaryFlag == 2) -+ { -+ lpFDDS = lpDDS; -+ -+ #ifdef HAVEDPRINTF -+ Dprintf ("Getting backbuffer\n"); -+ #endif -+ // get back buffer -+ DDSCAPS caps; -+ -+ caps.dwCaps = DDSCAPS_BACKBUFFER; -+ result = lpFDDS->GetAttachedSurface (&caps, &lpDDS); -+ if (result != DD_OK) -+ { -+ if (lpFDDS) lpFDDS->Release(); -+ lpFDDS = lpDDS = NULL; -+ -+ #ifdef HAVEDPRINTF -+ switch (result) { -+ case DDERR_INVALIDOBJECT: Dprintf ("DDERR_INVALIDOBJECT\n"); break; -+ case DDERR_INVALIDPARAMS: Dprintf ("DDERR_INVALIDPARAMS\n"); break; -+ case DDERR_NOTFOUND: Dprintf ("DDERR_NOTFOUND\n"); break; -+ case DDERR_SURFACELOST: Dprintf ("DDERR_SURFACELOST\n"); break; -+ } -+ #endif -+ -+ return; -+ } -+ } -+ - // setup IID_IDirectDrawSurface2 - GUID IID_IDirectDrawSurface2; - IID_IDirectDrawSurface2.Data1=1468029061; -*************** -*** 707,713 **** - if (lpDDS->QueryInterface(IID_IDirectDrawSurface2,(LPVOID*)&lpDDS2)!=DD_OK) - { - // failure -! //printf("failed to query lpDDS2\n"); - lpDDS2=NULL; - } - ---- 809,817 ---- - if (lpDDS->QueryInterface(IID_IDirectDrawSurface2,(LPVOID*)&lpDDS2)!=DD_OK) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf("failed to query lpDDS2\n"); -! #endif - lpDDS2=NULL; - } - -*************** -*** 738,746 **** - orientation=new_orientation; - advance=new_advance; - layout=LINEAR; -- -- // debug -- //printf("IDirectX::SURFACE::SURFACE ok\n"); - } - - ---- 842,847 ---- -*************** -*** 750,762 **** - if (lpDDS2) lpDDS2->Release(); - - // free directdraw surface -! if (lpDDS) lpDDS->Release(); - } - - - void* IDirectX::SURFACE::Lock(int wait) - { -! //printf("IDirectX::SURFACE::Lock\n"); - - // todo: properly handle the "wait" parameter - ---- 851,866 ---- - if (lpDDS2) lpDDS2->Release(); - - // free directdraw surface -! if (lpFDDS) lpFDDS->Release(); // [RH] Frees lpDDS, too. -! else if (lpDDS) lpDDS->Release(); - } - - - void* IDirectX::SURFACE::Lock(int wait) - { -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::SURFACE::Lock\n"); -! #endif - - // todo: properly handle the "wait" parameter - -*************** -*** 770,816 **** - if (lpDDS2) result=lpDDS2->Lock(NULL,&ddsd,DDLOCK_WAIT,NULL); - else if (lpDDS) result=lpDDS->Lock(NULL,&ddsd,DDLOCK_WAIT,NULL); - else -! { -! //printf("no lpDDS2 or lpDDS found\n"); -! return NULL; -! } - - // auto-restore if primary - if (Primary && result==DDERR_SURFACELOST) - { -! //printf("attempting to restore primary\n"); - - // restore -! if (!Restore()) -! { -! //printf("primary restore failed\n"); -! Sleep(10); -! return NULL; -! } - -! // check local interface -! if (LocalInterface) -! { -! // restore primary palette -! LocalInterface->SetPalette(LocalInterface->PrimaryPalette); -! } - - // try to lock again - if (lpDDS2) result=lpDDS2->Lock(NULL,&ddsd,DDLOCK_WAIT,NULL); - else if (lpDDS) result=lpDDS->Lock(NULL,&ddsd,DDLOCK_WAIT,NULL); -! else -! { -! //printf("no lpDDS2 or lpDDS found (2)\n"); -! return NULL; -! } - } - - // check result -! if (result!=DD_OK) -! { -! //printf("lock failed\n"); -! return NULL; -! } - - // update Buffer - Buffer=ddsd.lpSurface; ---- 874,930 ---- - if (lpDDS2) result=lpDDS2->Lock(NULL,&ddsd,DDLOCK_WAIT,NULL); - else if (lpDDS) result=lpDDS->Lock(NULL,&ddsd,DDLOCK_WAIT,NULL); - else -! { -! #ifdef HAVEDPRINTF -! Dprintf("no lpDDS2 or lpDDS found\n"); -! #endif -! return NULL; -! } - - // auto-restore if primary - if (Primary && result==DDERR_SURFACELOST) - { -! #ifdef HAVEDPRINTF -! Dprintf("attempting to restore primary\n"); -! #endif - - // restore -! if (!Restore()) -! { -! #ifdef HAVEDPRINTF -! Dprintf("primary restore failed\n"); -! #endif -! Sleep(10); -! return NULL; -! } - -! // check local interface -! if (LocalInterface) -! { -! // restore primary palette -! LocalInterface->SetPalette(LocalInterface->PrimaryPalette); -! } - - // try to lock again - if (lpDDS2) result=lpDDS2->Lock(NULL,&ddsd,DDLOCK_WAIT,NULL); - else if (lpDDS) result=lpDDS->Lock(NULL,&ddsd,DDLOCK_WAIT,NULL); -! else -! { -! #ifdef HAVEDPRINTF -! Dprintf("no lpDDS2 or lpDDS found (2)\n"); -! #endif -! return NULL; -! } - } - - // check result -! if (result!=DD_OK) -! { -! #ifdef HAVEDPRINTF -! Dprintf("lock failed\n"); -! #endif -! return NULL; -! } - - // update Buffer - Buffer=ddsd.lpSurface; -*************** -*** 818,844 **** - // increment lock count - Count++; - -! //printf("IDirectX::SURFACE::Lock ok\n"); - - // return locked buffer - return ddsd.lpSurface; - } - else - { -! //printf("previously locked buffer\n"); - - // check previously locked buffer -! if (!Buffer) -! { -! //printf("!Buffer\n"); -! return NULL; -! } - - // check surface - if (!ok()) - { -! //printf("surface !ok\n"); -! - // clear - Count=0; - Buffer=NULL; ---- 932,965 ---- - // increment lock count - Count++; - -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::SURFACE::Lock ok\n"); -! #endif - - // return locked buffer - return ddsd.lpSurface; - } - else - { -! #ifdef HAVEDPRINTF -! Dprintf("previously locked buffer\n"); -! #endif - - // check previously locked buffer -! if (!Buffer) -! { -! #ifdef HAVEDPRINTF -! Dprintf("!Buffer\n"); -! #endif -! return NULL; -! } - - // check surface - if (!ok()) - { -! #ifdef HAVEDPRINTF -! Dprintf("surface !ok\n"); -! #endif - // clear - Count=0; - Buffer=NULL; -*************** -*** 848,860 **** - // increment lock count - Count++; - -! //printf("IDirectX::SURFACE::Lock ok\n"); - - // return previously locked buffer - return Buffer; - } -! -! //printf("IDirectX::SURFACE::Lock failed\n"); - return NULL; - } - ---- 969,984 ---- - // increment lock count - Count++; - -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::SURFACE::Lock ok\n"); -! #endif - - // return previously locked buffer - return Buffer; - } -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::SURFACE::Lock failed\n"); -! #endif - return NULL; - } - -*************** -*** 870,875 **** ---- 994,1005 ---- - - // clear buffer - Buffer=NULL; -+ -+ if (lpFDDS) { -+ HRESULT dderr = lpFDDS->Flip (NULL, DDFLIP_WAIT); -+ if (dderr == DDERR_SURFACELOST) -+ Restore(); -+ } - } - - // decrement lock count -*************** -*** 893,919 **** - - int IDirectX::SURFACE::Restore() - { -- //printf("IDirectX::SURFACE::Restore\n"); -- - // restore surface -! if (lpDDS2 && lpDDS2->Restore()!=DD_OK) -! { -! // failure -! //printf("lpDDS2->Restore failed\n"); -! return 0; -! } -! else if (lpDDS && lpDDS->Restore()!=DD_OK) -! { -! //printf("lpDDS->Restore failed\n"); -! return 0; -! } -! else -! { -! //printf("no valid lpDD2 or lpDD found\n"); -! return 0; -! } -! -! //printf("IDirectX::SURFACE::Restore ok\n"); - - // success - return 1; ---- 1023,1033 ---- - - int IDirectX::SURFACE::Restore() - { - // restore surface -! if (lpFDDS && lpFDDS->Restore()!=DD_OK) return 0; -! else if (lpDDS2 && lpDDS2->Restore()!=DD_OK) return 0; -! else if (lpDDS && lpDDS->Restore()!=DD_OK) return 0; -! else return 0; - - // success - return 1; -*************** -*** 1008,1041 **** - - int IDirectX::InitDisplay(int x,int y,int id,int output,int frequency,int layout) - { -! //printf("IDirectX::InitDisplay\n"); - - // fail on windowed output - if (output==WINDOWED) - { -! //printf("no WINDOWED output is allowed\n"); - return 0; - } - - // check display mode - if (!CheckDisplayMode(x,y,id,frequency)) - { -! //printf("check display mode failed\n"); - return 0; - } - - // attempt direct mode set - if (EnterDisplayMode(x,y,id,frequency)) - { -! //printf("direct mode set succeeded!\n"); - return 1; - } - - // init display start setup - if (!InitDisplayStart(x,y,output,frequency,layout)) - { - // failure -! //printf("InitDisplayStart failed\n"); - CloseDisplay(); - return 0; - } ---- 1122,1167 ---- - - int IDirectX::InitDisplay(int x,int y,int id,int output,int frequency,int layout) - { -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::InitDisplay\n"); -! #endif - - // fail on windowed output - if (output==WINDOWED) - { -! #ifdef HAVEDPRINTF -! Dprintf("no WINDOWED output is allowed\n"); -! #endif - return 0; - } - - // check display mode - if (!CheckDisplayMode(x,y,id,frequency)) - { -! #ifdef HAVEDPRINTF -! Dprintf("check display mode failed\n"); -! #endif - return 0; - } - - // attempt direct mode set -+ /* [RH] Let's not - if (EnterDisplayMode(x,y,id,frequency)) - { -! #ifdef HAVEDPRINTF -! Dprintf("direct mode set succeeded!\n"); -! #endif - return 1; - } -+ */ - - // init display start setup - if (!InitDisplayStart(x,y,output,frequency,layout)) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf ("InitDisplayStart failed\n"); -! #endif - CloseDisplay(); - return 0; - } -*************** -*** 1044,1106 **** - if (!EnterDisplayMode(x,y,id,frequency)) - { - // failure -! //printf("EnterDisplayMode failed\n"); - CloseDisplay(); - return 0; - } - - // get ddraw pixel format -! /* - FORMAT format=GetDisplayFormat(); - if (!format.ok()) - { - // failure -! printf("bad display format!\n"); - CloseDisplay(); - return 0; - } -! */ - -! // hack -! FORMAT format=0; - - // init display finish setup - if (!InitDisplayFinish(x,y,format,output,frequency,layout)) - { - // failure -! //printf("InitDisplayFinish failed\n"); - CloseDisplay(); - return 0; - } - - // success -! //printf("IDirectX::InitDisplay ok\n"); - return 1; - } - - - int IDirectX::InitDisplay(int x,int y,FORMAT const &format,int output,int frequency,int layout) - { -! //printf("IDirectX::InitDisplay(2)\n"); - - // fail on windowed output -! if (output==WINDOWED) - { -! //printf("no WINDOWED output ya dorq!\n"); - return 0; - } - - // check display mode - if (!CheckDisplayMode(x,y,format,frequency)) - { -! //printf("check display mode failure\n"); - return 0; - } - - // attempt direct mode set - if (EnterDisplayMode(x,y,format,frequency)) - { -! //printf("direct mode set succeeded\n"); - return 1; - } - ---- 1170,1248 ---- - if (!EnterDisplayMode(x,y,id,frequency)) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf ("EnterDisplayMode failed\n"); -! #endif - CloseDisplay(); - return 0; - } - - // get ddraw pixel format -! /* - FORMAT format=GetDisplayFormat(); - if (!format.ok()) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf("bad display format\n"); -! #endif - CloseDisplay(); - return 0; - } -! */ - -! // hack -! FORMAT format=0; - - // init display finish setup - if (!InitDisplayFinish(x,y,format,output,frequency,layout)) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf ("InitDisplayFinish failed\n"); -! #endif - CloseDisplay(); - return 0; - } - - // success -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::InitDisplay ok\n"); -! #endif - return 1; - } - - - int IDirectX::InitDisplay(int x,int y,FORMAT const &format,int output,int frequency,int layout) - { -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::InitDisplay(2)\n"); -! #endif - - // fail on windowed output -! if (output==WINDOWED) - { -! #ifdef HAVEDPRINTF -! Dprintf("no WINDOWED output ya dorq!\n"); -! #endif - return 0; - } - - // check display mode - if (!CheckDisplayMode(x,y,format,frequency)) - { -! #ifdef HAVEDPRINTF -! Dprintf("check display mode failure\n"); -! #endif - return 0; - } - - // attempt direct mode set - if (EnterDisplayMode(x,y,format,frequency)) - { -! #ifdef HAVEDPRINTF -! Dprintf("direct mode set succeeded\n"); -! #endif - return 1; - } - -*************** -*** 1108,1114 **** - if (!InitDisplayStart(x,y,output,frequency,layout)) - { - // failure -! //printf("init display start failed\n"); - CloseDisplay(); - return 0; - } ---- 1250,1258 ---- - if (!InitDisplayStart(x,y,output,frequency,layout)) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf ("InitDisplayStart failed\n"); -! #endif - CloseDisplay(); - return 0; - } -*************** -*** 1117,1123 **** - if (!EnterDisplayMode(x,y,format,frequency)) - { - // failure -! //printf("enter display mode failed\n"); - CloseDisplay(); - return 0; - } ---- 1261,1269 ---- - if (!EnterDisplayMode(x,y,format,frequency)) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf ("EnterDisplayMode failed\n"); -! #endif - CloseDisplay(); - return 0; - } -*************** -*** 1126,1145 **** - if (!InitDisplayFinish(x,y,format,output,frequency,layout)) - { - // failure -! //printf("init display finish failed\n"); - CloseDisplay(); - return 0; - } - - // success -! //printf("IDirectX::InitDisplay(2) ok\n"); - return 1; - } - - - void IDirectX::CloseDisplay() -! { -! //printf("IDirectX::CloseDisplay\n"); - - // leave display mode - LeaveDisplayMode(); ---- 1272,1297 ---- - if (!InitDisplayFinish(x,y,format,output,frequency,layout)) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf("init display finish failed\n"); -! #endif - CloseDisplay(); - return 0; - } - - // success -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::InitDisplay(2) ok\n"); -! #endif - return 1; - } - - - void IDirectX::CloseDisplay() -! { -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::CloseDisplay\n"); -! #endif - - // leave display mode - LeaveDisplayMode(); -*************** -*** 1150,1156 **** - // close display Window - CloseDisplayWindow(); - -! //printf("IDirectX::CloseDisplay ok\n"); - } - - ---- 1302,1310 ---- - // close display Window - CloseDisplayWindow(); - -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::CloseDisplay ok\n"); -! #endif - } - - -*************** -*** 1160,1172 **** - - - int IDirectX::EnterDisplayMode(int x,int y,int id,int frequency) -! { -! //printf("IDirectX::EnterDisplayMode\n"); - - // enter exclusive mode - if (!EnterExclusiveMode()) - { -! //printf("EnterExclusiveMode failed\n"); - return 0; - } - ---- 1314,1330 ---- - - - int IDirectX::EnterDisplayMode(int x,int y,int id,int frequency) -! { -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::EnterDisplayMode\n"); -! #endif - - // enter exclusive mode - if (!EnterExclusiveMode()) - { -! #ifdef HAVEDPRINTF -! Dprintf("EnterExclusiveMode failed\n"); -! #endif - return 0; - } - -*************** -*** 1195,1211 **** - } - - // set by bits per pixel -! if (SetDisplayMode(x,y,id,frequency)) return 1; - - // failure -! //printf("EnterDisplayMode fail!\n"); - return 0; - } - - - int IDirectX::EnterDisplayMode(int x,int y,FORMAT const &format,int frequency) -! { -! //printf("IDirectX::EnterDisplayMode\n"); - - // check format - if (!format.ok()) return 0; ---- 1353,1373 ---- - } - - // set by bits per pixel -! if (SetDisplayMode(x,y,FORMAT(id),frequency)) return 1; - - // failure -! #ifdef HAVEDPRINTF -! Dprintf("EnterDisplayMode fail!\n"); -! #endif - return 0; - } - - - int IDirectX::EnterDisplayMode(int x,int y,FORMAT const &format,int frequency) -! { -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::EnterDisplayMode(2)\n"); -! #endif - - // check format - if (!format.ok()) return 0; -*************** -*** 1213,1244 **** - // enter exclusive mode - if (!EnterExclusiveMode()) - { -! //printf("EnterExclusiveMode failed\n"); - return 0; - } - - // set display mode - if (!SetDisplayMode(x,y,format,frequency)) return 0; - -! //printf("IDirectX::EnterDisplayMode ok\n"); - -! // success - return 1; - } - - - int IDirectX::SetDisplayMode(int x,int y,int bits,int frequency) - { - // set display mode - if (lpDD2) - { - // lpDD2 -! if (lpDD2->SetDisplayMode(x,y,bits,0,0)!=DD_OK) return 0; - } - else if (lpDD) - { - // lpDD -! if (lpDD->SetDisplayMode(x,y,bits)!=DD_OK) return 0; - } - else return 0; - ---- 1375,1443 ---- - // enter exclusive mode - if (!EnterExclusiveMode()) - { -! #ifdef HAVEDPRINTF -! Dprintf("EnterExclusiveMode(2) failed\n"); -! #endif - return 0; - } - - // set display mode - if (!SetDisplayMode(x,y,format,frequency)) return 0; - -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::EnterDisplayMode(2) ok\n"); -! #endif - -! // success - return 1; - } - -+ #ifdef HAVEDPRINTF -+ static void dumpsdmerr (HRESULT err) -+ { -+ switch (err) { -+ case DDERR_GENERIC: Dprintf ("DDERR_GENERIC\n"); break; -+ case DDERR_INVALIDMODE: Dprintf ("DDERR_INVALIDMODE\n"); break; -+ case DDERR_INVALIDOBJECT: Dprintf ("DDERR_INVALIDOBJECT\n"); break; -+ case DDERR_INVALIDPARAMS: Dprintf ("DDERR_INVALIDPARAMS\n"); break; -+ case DDERR_LOCKEDSURFACES: Dprintf ("DDERR_LOCKEDSURFACES\n"); break; -+ case DDERR_NOEXCLUSIVEMODE: Dprintf ("DDERR_NOEXCLUSIVEMODE\n"); break; -+ case DDERR_SURFACEBUSY: Dprintf ("DDERR_SURFACEBUSY\n"); break; -+ case DDERR_UNSUPPORTED: Dprintf ("DDERR_UNSUPPORTED\n"); break; -+ case DDERR_UNSUPPORTEDMODE: Dprintf ("DDERR_UNSUPPORTEDMODE\n"); break; -+ case DDERR_WASSTILLDRAWING: Dprintf ("DDERR_WASSTILLDRAWING\n"); break; -+ } -+ } -+ #endif - - int IDirectX::SetDisplayMode(int x,int y,int bits,int frequency) - { -+ HRESULT err; -+ -+ #ifdef HAVEDPRINTF -+ Dprintf ("SetDisplayMode: %dx%dx%d\n", x, y, bits); -+ #endif -+ - // set display mode - if (lpDD2) - { - // lpDD2 -! if ((err = lpDD2->SetDisplayMode(x,y,bits,0,0)) != DD_OK) { -! #ifdef HAVEDPRINTF -! dumpsdmerr (err); -! #endif -! return 0; -! } - } - else if (lpDD) - { - // lpDD -! if ((err = lpDD->SetDisplayMode(x,y,bits)) != DD_OK) { -! #ifdef HAVEDPRINTF -! dumpsdmerr (err); -! #endif -! return 0; -! } - } - else return 0; - -*************** -*** 1249,1277 **** - - int IDirectX::SetDisplayMode(int x,int y,FORMAT const &format,int frequency) - { -! // set display mode - if (lpDD2) - { - // lpDD2 -! if (lpDD2->SetDisplayMode(x,y,format.bits,0,0)!=DD_OK) return 0; - } - else if (lpDD) - { - // lpDD -! if (lpDD->SetDisplayMode(x,y,format.bits)!=DD_OK) return 0; - } - else return 0; - - // check display format matches requested format -! /* - FORMAT display_format=GetDisplayFormat(); - if (!display_format.ok() || display_format!=format) - { - // failure -! printf("display format and requested format dont match!\n"); - return 0; - } -! */ - - // success - return 1; ---- 1448,1494 ---- - - int IDirectX::SetDisplayMode(int x,int y,FORMAT const &format,int frequency) - { -! HRESULT err; -! -! #ifdef HAVEDPRINTF -! Dprintf ("SetDisplayMode: %dx%dx%d\n", x, y, format.bits); -! #endif -! -! // set display mode - if (lpDD2) - { - // lpDD2 -! if ((err = lpDD2->SetDisplayMode(x,y,format.bits,0,0)) != DD_OK) { -! #ifdef HAVEDPRINTF -! dumpsdmerr (err); -! #endif -! return 0; -! } - } - else if (lpDD) - { - // lpDD -! if ((err = lpDD->SetDisplayMode(x,y,format.bits)) != DD_OK) { -! #ifdef HAVEDPRINTF -! dumpsdmerr (err); -! #endif -! return 0; -! } - } - else return 0; - - // check display format matches requested format -! /* - FORMAT display_format=GetDisplayFormat(); - if (!display_format.ok() || display_format!=format) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf("display format and requested format dont match!\n"); -! #endif - return 0; - } -! */ - - // success - return 1; -*************** -*** 1421,1463 **** - - int IDirectX::EnterExclusiveMode() - { -! //printf("IDirectX::EnterExclusiveMode\n"); - - // get managed window - HWND window=GetManagedWindow(); - if (!window) -! { -! //printf("no managed window found\n"); -! return 0; -! } - - // enter directdraw exclusive mode - HRESULT result; -! if (lpDD2) result=lpDD2->SetCooperativeLevel(window,DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN); -! else if (lpDD) result=lpDD->SetCooperativeLevel(window,DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN); - else -! { -! //printf("no valid lpDD?\n"); -! return 0; -! } - - // check result - if (result!=DD_OK) - { -- /* - // debug - switch (result) - { -! case DDERR_EXCLUSIVEMODEALREADYSET: printf("DDERR_EXCLUSIVEMODEALREADYSET\n"); break; -! case DDERR_HWNDALREADYSET: printf("DDERR_HWNDALREADYSET\n"); break; -! case DDERR_HWNDSUBCLASSED: printf("DDERR_HWNDSUBCLASSED\n"); break; -! case DDERR_INVALIDOBJECT: printf("DDERR_INVALIDOBJECT\n"); break; -! case DDERR_INVALIDPARAMS: printf("DDERR_INVALIDPARAMS\n"); break; -! case DDERR_OUTOFMEMORY: printf("DDERR_OUTOFMEMORY\n"); break; - } -! */ - -! // check for stupid dx bug... - if (result==DDERR_HWNDALREADYSET) - { - // close old ---- 1638,1686 ---- - - int IDirectX::EnterExclusiveMode() - { -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::EnterExclusiveMode\n"); -! #endif - - // get managed window - HWND window=GetManagedWindow(); - if (!window) -! { -! #ifdef HAVEDPRINTF -! Dprintf("no managed window found\n"); -! #endif -! return 0; -! } - - // enter directdraw exclusive mode - HRESULT result; -! if (lpDD2) result=lpDD2->SetCooperativeLevel(window,DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT | DDSCL_ALLOWMODEX); -! else if (lpDD) result=lpDD->SetCooperativeLevel(window,DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT | DDSCL_ALLOWMODEX); - else -! { -! #ifdef HAVEDPRINTF -! Dprintf("no valid lpDD?\n"); -! #endif -! return 0; -! } - - // check result - if (result!=DD_OK) - { - // debug -+ #ifdef HAVEDPRINTF - switch (result) - { -! case DDERR_EXCLUSIVEMODEALREADYSET: Dprintf("DDERR_EXCLUSIVEMODEALREADYSET\n"); break; -! case DDERR_HWNDALREADYSET: Dprintf("DDERR_HWNDALREADYSET\n"); break; -! case DDERR_HWNDSUBCLASSED: Dprintf("DDERR_HWNDSUBCLASSED\n"); break; -! case DDERR_INVALIDOBJECT: Dprintf("DDERR_INVALIDOBJECT\n"); break; -! case DDERR_INVALIDPARAMS: Dprintf("DDERR_INVALIDPARAMS\n"); break; -! case DDERR_OUTOFMEMORY: Dprintf("DDERR_OUTOFMEMORY\n"); break; - } -! #endif - -! // check for stupid dx bug... - if (result==DDERR_HWNDALREADYSET) - { - // close old -*************** -*** 1466,1506 **** - // reinitialize directdraw - if (!InitDirectDraw()) - { -! //printf("InitDirectDraw failed\n"); - return 0; - } - - // reattempt exclusive mode -! if (lpDD2) result=lpDD2->SetCooperativeLevel(window,DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN); -! else if (lpDD) result=lpDD->SetCooperativeLevel(window,DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN); - else -! { -! //printf("failed to re-enter exclusive mode\n"); -! return 0; -! } - } - -- /* - // check result - if (result!=DD_OK) - { - // debug - switch (result) - { -! case DDERR_EXCLUSIVEMODEALREADYSET: printf("DDERR_EXCLUSIVEMODEALREADYSET\n"); break; -! case DDERR_HWNDALREADYSET: printf("DDERR_HWNDALREADYSET\n"); break; -! case DDERR_HWNDSUBCLASSED: printf("DDERR_HWNDSUBCLASSED\n"); break; -! case DDERR_INVALIDOBJECT: printf("DDERR_INVALIDOBJECT\n"); break; -! case DDERR_INVALIDPARAMS: printf("DDERR_INVALIDPARAMS\n"); break; -! case DDERR_OUTOFMEMORY: printf("DDERR_OUTOFMEMORY\n"); break; - } - return 0; - } -- */ - } - - // success -! //printf("IDirectX::EnterExclusiveMode ok\n"); - return 1; - } - ---- 1689,1735 ---- - // reinitialize directdraw - if (!InitDirectDraw()) - { -! #ifdef HAVEDPRINTF -! Dprintf("InitDirectDraw failed\n"); -! #endif - return 0; - } - - // reattempt exclusive mode -! if (lpDD2) result=lpDD2->SetCooperativeLevel(window,DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT | DDSCL_ALLOWMODEX); -! else if (lpDD) result=lpDD->SetCooperativeLevel(window,DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT | DDSCL_ALLOWMODEX); - else -! { -! #ifdef HAVEDPRINTF -! Dprintf("failed to re-enter exclusive mode\n"); -! #endif -! return 0; -! } - } - - // check result - if (result!=DD_OK) - { - // debug -+ #ifdef HAVEDPRINTF - switch (result) - { -! case DDERR_EXCLUSIVEMODEALREADYSET: Dprintf("DDERR_EXCLUSIVEMODEALREADYSET\n"); break; -! case DDERR_HWNDALREADYSET: Dprintf("DDERR_HWNDALREADYSET\n"); break; -! case DDERR_HWNDSUBCLASSED: Dprintf("DDERR_HWNDSUBCLASSED\n"); break; -! case DDERR_INVALIDOBJECT: Dprintf("DDERR_INVALIDOBJECT\n"); break; -! case DDERR_INVALIDPARAMS: Dprintf("DDERR_INVALIDPARAMS\n"); break; -! case DDERR_OUTOFMEMORY: Dprintf("DDERR_OUTOFMEMORY\n"); break; - } -+ #endif - return 0; - } - } - - // success -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::EnterExclusiveMode ok\n"); -! #endif - return 1; - } - -*************** -*** 1508,1520 **** - void IDirectX::LeaveExclusiveMode() - { - // debug -! //printf("IDirectX::LeaveExclusiveMode\n"); - - // leave exclusive mode - if (lpDD2) lpDD2->SetCooperativeLevel(NULL,DDSCL_NORMAL); - else if (lpDD) lpDD->SetCooperativeLevel(NULL,DDSCL_NORMAL); - -! //printf("IDirectX::LeaveExclusiveMode ok\n"); - } - - ---- 1737,1753 ---- - void IDirectX::LeaveExclusiveMode() - { - // debug -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::LeaveExclusiveMode\n"); -! #endif - - // leave exclusive mode - if (lpDD2) lpDD2->SetCooperativeLevel(NULL,DDSCL_NORMAL); - else if (lpDD) lpDD->SetCooperativeLevel(NULL,DDSCL_NORMAL); - -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::LeaveExclusiveMode ok\n"); -! #endif - } - - -*************** -*** 1525,1531 **** - - int IDirectX::InitDirectDraw() - { -! //printf("IDirectX::InitDirectDraw\n"); - - // close old - CloseDirectDraw(); ---- 1758,1766 ---- - - int IDirectX::InitDirectDraw() - { -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::InitDirectDraw\n"); -! #endif - - // close old - CloseDirectDraw(); -*************** -*** 1534,1540 **** - DirectDrawInstance=(HMODULE)LoadLibrary("ddraw.dll"); - if (!DirectDrawInstance) - { -! //printf("LoadLibrary failed\n"); - return 0; - } - ---- 1769,1777 ---- - DirectDrawInstance=(HMODULE)LoadLibrary("ddraw.dll"); - if (!DirectDrawInstance) - { -! #ifdef HAVEDPRINTF -! Dprintf("LoadLibrary failed\n"); -! #endif - return 0; - } - -*************** -*** 1542,1556 **** - DIRECTDRAWCREATE_FUNCTION DirectDrawCreateFunction = (DIRECTDRAWCREATE_FUNCTION) GetProcAddress(DirectDrawInstance,"DirectDrawCreate"); - if (!DirectDrawCreateFunction) - { -! //printf("GetProcAddress failed\n"); -! return 0; - } - - // contruct directdraw object - HRESULT result=(*DirectDrawCreateFunction)(NULL,&lpDD,NULL); - if (result!=DD_OK) - { -! //printf("DirectDrawCreate failed\n"); - if (lpDD) lpDD->Release(); - lpDD=NULL; - return 0; ---- 1779,1797 ---- - DIRECTDRAWCREATE_FUNCTION DirectDrawCreateFunction = (DIRECTDRAWCREATE_FUNCTION) GetProcAddress(DirectDrawInstance,"DirectDrawCreate"); - if (!DirectDrawCreateFunction) - { -! #ifdef HAVEDPRINTF -! Dprintf("GetProcAddress failed\n"); -! #endif -! return 0; - } - - // contruct directdraw object - HRESULT result=(*DirectDrawCreateFunction)(NULL,&lpDD,NULL); - if (result!=DD_OK) - { -! #ifdef HAVEDPRINTF -! Dprintf("DirectDrawCreate failed\n"); -! #endif - if (lpDD) lpDD->Release(); - lpDD=NULL; - return 0; -*************** -*** 1575,1586 **** - if (result!=DD_OK) - { - // failure -! //printf("failed to query lpDD2\n"); - lpDD2=NULL; - } - - // success -! //printf("IDirectX::InitDirectDraw ok\n"); - return 1; - } - ---- 1816,1833 ---- - if (result!=DD_OK) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf("failed to query lpDD2\n"); -! #endif - lpDD2=NULL; - } - -+ LeaveExclusiveMode (); -+ - // success -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::InitDirectDraw ok\n"); -! #endif - return 1; - } - -*************** -*** 1602,1608 **** - lpDD2=NULL; - - // release ddraw.dll -! if (DirectDrawInstance) FreeLibrary(DirectDrawInstance); - } - - ---- 1849,1858 ---- - lpDD2=NULL; - - // release ddraw.dll -! if (DirectDrawInstance) { -! FreeLibrary(DirectDrawInstance); -! DirectDrawInstance = NULL; -! } - } - - -*************** -*** 1622,1628 **** - // resize existing window - if (ResizeDisplayWindow(width,height,output)) return 1; - } -! else if (window && output==FULLSCREEN) - { - // todo: fix mode changes fullscreen->fullscreen - } ---- 1872,1878 ---- - // resize existing window - if (ResizeDisplayWindow(width,height,output)) return 1; - } -! else if (window && (output==FULLSCREEN || output==FSDBLBUFF)) - { - // todo: fix mode changes fullscreen->fullscreen - } -*************** -*** 1633,1640 **** - // adjust window size - AdjustWindowSize(width,height,output); - -! // force active window -! ForceActiveWindow=1; - - // specific initialization - if (output==WINDOWED) ---- 1883,1890 ---- - // adjust window size - AdjustWindowSize(width,height,output); - -! // force active window -! ForceActiveWindow=1; - - // specific initialization - if (output==WINDOWED) -*************** -*** 1642,1651 **** - // create windowed output window - if (!CreateManagedWindow("PTC_DIRECTX_WINDOWED",WS_OVERLAPPEDWINDOW,SW_NORMAL,CW_USEDEFAULT,CW_USEDEFAULT,width,height)) return 0; - } -! else if (output==FULLSCREEN) - { - // create fullscreen output window -! if (!CreateManagedWindow("PTC_DIRECTX_FULLSCREEN",WS_POPUP|WS_SYSMENU,SW_HIDE,0,0,0,0)) return 0; - } - else return 0; - ---- 1892,1901 ---- - // create windowed output window - if (!CreateManagedWindow("PTC_DIRECTX_WINDOWED",WS_OVERLAPPEDWINDOW,SW_NORMAL,CW_USEDEFAULT,CW_USEDEFAULT,width,height)) return 0; - } -! else if (output==FULLSCREEN || output==FSDBLBUFF) - { - // create fullscreen output window -! if (!CreateManagedWindow("PTC_DIRECTX_FULLSCREEN",WS_POPUP,SW_HIDE,0,0,0,0)) return 0; - } - else return 0; - -*************** -*** 1690,1698 **** - - - -! int IDirectX::InitPrimary() - { -! //printf("IDirectX::InitPrimary\n"); - - // enter critical section - EnterWindowCriticalSection(); ---- 1940,1950 ---- - - - -! int IDirectX::InitPrimary(int dblbuff) - { -! #ifdef HAVEDPRINTF -! Dprintf ("InitPrimary\n"); -! #endif - - // enter critical section - EnterWindowCriticalSection(); -*************** -*** 1704,1710 **** - int result=1; - - // set primary flag -! PrimaryFlag=1; - - // initialize new video memory surface (primary) - Primary=new Surface(this,XResolution,YResolution,Format,VIDEO); ---- 1956,1962 ---- - int result=1; - - // set primary flag -! PrimaryFlag=dblbuff+1; - - // initialize new video memory surface (primary) - Primary=new Surface(this,XResolution,YResolution,Format,VIDEO); -*************** -*** 1721,1730 **** - // leave critical section - LeaveWindowCriticalSection(); - -! /* -! if (!result) printf("IDirectX::InitPrimary failed\n"); -! else printf("IDirectX::InitPrimary ok\n"); -! */ - - // finished - return result; ---- 1973,1982 ---- - // leave critical section - LeaveWindowCriticalSection(); - -! #ifdef HAVEDPRINTF -! if (!result) Dprintf("IDirectX::InitPrimary failed\n"); -! else Dprintf("IDirectX::InitPrimary ok\n"); -! #endif - - // finished - return result; -*************** -*** 1758,1765 **** - // enumerate directx modes - if (lpDD2) if (lpDD2->EnumDisplayModes(0,NULL,(LPVOID)this,(LPDDENUMMODESCALLBACK)EnumDisplayModesCallback)==DD_OK) return 1; - else if (lpDD) if (lpDD->EnumDisplayModes(0,NULL,(LPVOID)this,(LPDDENUMMODESCALLBACK)EnumDisplayModesCallback)==DD_OK) return 1; -! -! // failure - return 0; - } - ---- 2010,2017 ---- - // enumerate directx modes - if (lpDD2) if (lpDD2->EnumDisplayModes(0,NULL,(LPVOID)this,(LPDDENUMMODESCALLBACK)EnumDisplayModesCallback)==DD_OK) return 1; - else if (lpDD) if (lpDD->EnumDisplayModes(0,NULL,(LPVOID)this,(LPDDENUMMODESCALLBACK)EnumDisplayModesCallback)==DD_OK) return 1; -! -! // failure - return 0; - } - -*************** -*** 1826,1832 **** - // indexed 8bit color - return format.init(INDEX8); - } -! else return 0; - } - - ---- 2078,2084 ---- - // indexed 8bit color - return format.init(INDEX8); - } -! else return 0; - } - - -*************** -*** 1868,1874 **** - } - - // failure -! //printf("failed to translate FORMAT -> DDPIXELFORMAT\n"); - return 0; - } - ---- 2120,2128 ---- - } - - // failure -! #ifdef HAVEDPRINTF -! Dprintf("failed to translate FORMAT -> DDPIXELFORMAT\n"); -! #endif - return 0; - } - -*************** -*** 1881,1911 **** - int IDirectX::InitDisplayStart(int &x,int &y,int &output,int &frequency,int &layout) - { - // debug -! //printf("IDirectX::InitDisplayStart\n"); - - // fail if not managed -! if (!ManagedWindow()) -! { -! //printf("no window found\n"); -! return 0; -! } - - // no windowed output yet... - if (output==WINDOWED) - { -! //printf("no windowed output yet!\n"); - return 0; - } - - // fail on bad output parameter -! if (output!=DEFAULT && output!=FULLSCREEN && output!=WINDOWED) - { -! //printf("bad output parameter\n"); - return 0; - } - -! // default output is fullscreen -! if (output==DEFAULT) output=FULLSCREEN; - - // default frequency is UNKNOWN (?) - if (frequency==DEFAULT) frequency=UNKNOWN; ---- 2135,2175 ---- - int IDirectX::InitDisplayStart(int &x,int &y,int &output,int &frequency,int &layout) - { - // debug -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::InitDisplayStart\n"); -! #endif - - // fail if not managed -! /* [RH] Doesn't work with client-provided windows -! if (!ManagedWindow()) -! { -! #ifdef HAVEDPRINTF -! Dprintf("no window found\n"); -! #endif -! return 0; -! } -! */ - - // no windowed output yet... - if (output==WINDOWED) - { -! #ifdef HAVEDPRINTF -! Dprintf("no windowed output yet!\n"); -! #endif - return 0; - } - - // fail on bad output parameter -! if (output!=DEFAULT && output!=FULLSCREEN && output!=WINDOWED && output!=FSDBLBUFF) - { -! #ifdef HAVEDPRINTF -! Dprintf("bad output parameter\n"); -! #endif - return 0; - } - -! // default output is fullscreen [RH] double-buffered -! if (output==DEFAULT) output=FSDBLBUFF; - - // default frequency is UNKNOWN (?) - if (frequency==DEFAULT) frequency=UNKNOWN; -*************** -*** 1913,1990 **** - // check layout - if (layout!=DEFAULT && layout!=LINEAR) - { -! //printf("bad layout parameter\n"); - return 0; - } - - // todo: recycle window if already in a mode... - - // create display window -! if (!CreateDisplayWindow(x,y,output)) -! { -! //printf("CreateDisplayWindow failed\n"); -! return 0; -! } - - // success -! //printf("IDirectX::InitDisplayStart ok\n"); - return 1; - } - - - int IDirectX::InitDisplayFinish(int &x,int &y,FORMAT const &format,int &output,int &frequency,int &layout) - { -! // debug -! //printf("IDirectX::InitDisplayFinish\n"); - - // setup data - XResolution=x; - YResolution=y; - - // initialize primary -! if (!InitPrimary()) -! { -! //printf("InitPrimary failed\n"); -! return 0; -! } - -! // get primary surface pixel format -! Surface *primary=GetPrimary(); -! FORMAT primary_format=primary->GetFormat(); -! -! // check pixel format match -! if (format.ok() && format!=primary_format) -! { -! //printf("requested mode format does not match primary surface format!\n"); -! return 0; -! } - - // get managed window - HWND window=GetManagedWindow(); -! if (!window) -! { -! //printf("no managed window found\n"); -! return 0; -! } - - // register window for interface lookup -! if (!RegisterWindow(window)) -! { -! //printf("failed to register window\n"); -! return 0; -! } - - // reallow window deactivation - EnterWindowCriticalSection(); - ForceActiveWindow=0; - LeaveWindowCriticalSection(); - -! // setup data -! XResolution=x; -! YResolution=y; -! Format=primary_format; -! Output=output; -! Frequency=frequency; - - // clear primary palette - uint *data=(uint*)PrimaryPalette.Lock(); ---- 2177,2271 ---- - // check layout - if (layout!=DEFAULT && layout!=LINEAR) - { -! #ifdef HAVEDPRINTF -! Dprintf("bad layout parameter\n"); -! #endif - return 0; - } - - // todo: recycle window if already in a mode... - - // create display window -! // [RH] Only if PTC is providing the window -! if (ManagedWindow ()) -! if (!CreateDisplayWindow(x,y,output)) -! { -! #ifdef HAVEDPRINTF -! Dprintf("CreateDisplayWindow failed\n"); -! #endif -! return 0; -! } - - // success -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::InitDisplayStart ok\n"); -! #endif - return 1; - } - - - int IDirectX::InitDisplayFinish(int &x,int &y,FORMAT const &format,int &output,int &frequency,int &layout) - { -! #ifdef HAVEDPRINTF -! Dprintf ("IDirectX::InitDisplayFinish\n"); -! #endif - - // setup data - XResolution=x; - YResolution=y; - - // initialize primary -! if (!InitPrimary(output == FSDBLBUFF)) -! { -! #ifdef HAVEDPRINTF -! Dprintf("InitPrimary failed\n"); -! #endif -! return 0; -! } - -! // get primary surface pixel format -! Surface *primary=GetPrimary(); -! FORMAT primary_format=primary->GetFormat(); -! -! // check pixel format match -! if (format.ok() && format!=primary_format) -! { -! #ifdef HAVEDPRINTF -! Dprintf("requested mode format does not match primary surface format!\n"); -! #endif -! return 0; -! } - - // get managed window - HWND window=GetManagedWindow(); -! if (!window) -! { -! #ifdef HAVEDPRINTF -! Dprintf("no managed window found\n"); -! #endif -! return 0; -! } - - // register window for interface lookup -! if (!RegisterWindow(window)) -! { -! #ifdef HAVEDPRINTF -! Dprintf("failed to register window\n"); -! #endif -! return 0; -! } - - // reallow window deactivation - EnterWindowCriticalSection(); - ForceActiveWindow=0; - LeaveWindowCriticalSection(); - -! // setup data -! XResolution=x; -! YResolution=y; -! Format=primary_format; -! Output=output; -! Frequency=frequency; - - // clear primary palette - uint *data=(uint*)PrimaryPalette.Lock(); -*************** -*** 1998,2081 **** - } - - // success -! //printf("IDirectX::InitDisplayFinish ok\n"); - return 1; - } - - - FORMAT IDirectX::GetDisplayFormat() - { -! // debug -! //printf("IDirectX::GetDisplayFormat\n"); - -! /* - // setup directdraw surface descriptor - DDSURFACEDESC desc; - memset(&desc,0,sizeof(desc)); - desc.dwSize=sizeof(desc); -! desc.dwFlags=DDSD_CAPS; -! desc.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE; -! -! // create directdraw primary surface -! LPDIRECTDRAWSURFACE lpDDS=NULL; -! if (lpDD2) -! { -! // lpDD2 -! if (lpDD2->CreateSurface(&desc,&lpDDS,NULL)!=DD_OK) -! { -! // failure -! //printf("lpDD2->CreateSurface failed\n"); -! return 0; -! } -! } -! else if (lpDD) -! { -! // lpDD -! if (lpDD->CreateSurface(&desc,&lpDDS,NULL)!=DD_OK) -! { -! // failure -! printf("lpDD->CreateSurface failed\n"); -! return 0; -! } -! } -! else -! { -! // failure -! printf("no valid lpDD object!\n"); -! return 0; -! } - - // get pixel format -! DDPIXELFORMAT ddpf; -! memset(&ddpf,0,sizeof(ddpf)); -! ddpf.dwSize=sizeof(ddpf); -! if (lpDDS->GetPixelFormat(&ddpf)!=DD_OK) -! { -! // failure -! printf("lpDDS->GetPixelFormat failed\n"); -! lpDDS->Release(); -! return 0; -! } - - // translate to FORMAT - FORMAT format; -! if (!Translate(ddpf,format)) - { - // failure -! printf("format translation failed\n"); -! lpDDS->Release(); - return 0; - } -! -! // release surface -! lpDDS->Release(); -! */ -! - // this function is now obsolete! - FORMAT format=0; - - // success -- //printf("IDirectX::GetDisplayFormat ok\n"); - return format; - } - ---- 2279,2351 ---- - } - - // success -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::InitDisplayFinish ok\n"); -! #endif - return 1; - } - - - FORMAT IDirectX::GetDisplayFormat() - { -! // debug -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::GetDisplayFormat\n"); -! #endif - -! /* - // setup directdraw surface descriptor - DDSURFACEDESC desc; - memset(&desc,0,sizeof(desc)); - desc.dwSize=sizeof(desc); -! -! // [RH] Changed this so it calls GetDisplayMode() instead -! // of creating a primary surface and querying that. -! if (lpDD2) { -! if (lpDD2->GetDisplayMode (&desc) != DD_OK) { -! #ifdef HAVEDPRINTF -! Dprintf ("lpDD2->GetDisplayMode failed\n"); -! #endif -! return 0; -! } -! } else if (lpDD) { -! if (lpDD->GetDisplayMode (&desc) != DD_OK) { -! #ifdef HAVEDPRINTF -! Dprintf ("lpDD->GetDisplayMode failed\n"); -! #endif -! return 0; -! } -! } else { -! #ifdef HAVEDPRINTF -! Dprintf ("no valid lpDD object!\n"); -! #endif -! return 0; -! } - - // get pixel format -! if (!(desc.dwFlags & DDSD_PIXELFORMAT)) { -! // failure -! #ifdef HAVEDPRINTF -! Dprintf ("Surface descriptor did not contain pixel format info\n"); -! #endif -! return 0; -! } - - // translate to FORMAT - FORMAT format; -! if (!Translate(desc.ddpfPixelFormat,format)) - { - // failure -! #ifdef HAVEDPRINTF -! Dprintf("format translation failed\n"); -! #endif - return 0; - } -! */ - // this function is now obsolete! - FORMAT format=0; - - // success - return format; - } - -*************** -*** 2124,2130 **** - // next - current=iterator.next(); - } -! - // leave critical section - LeaveStaticCriticalSection(); - return result; ---- 2394,2400 ---- - // next - current=iterator.next(); - } -! - // leave critical section - LeaveStaticCriticalSection(); - return result; -*************** -*** 2299,2306 **** - switch (message) - { - case WM_CREATE: -! -! //printf("IDirectX::WndProcFullscreen - WM_CREATE\n"); - - // hide cursor - SetCursor(NULL); ---- 2569,2578 ---- - switch (message) - { - case WM_CREATE: -! -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::WndProcFullscreen - WM_CREATE\n"); -! #endif - - // hide cursor - SetCursor(NULL); -*************** -*** 2308,2314 **** - - case WM_PAINT: - -! //printf("IDirectX::WndProcFullscreen - WM_PAINT\n"); - - /* - // check primary surface ---- 2580,2588 ---- - - case WM_PAINT: - -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::WndProcFullscreen - WM_PAINT\n"); -! #endif - - /* - // check primary surface -*************** -*** 2357,2376 **** - - case WM_SETCURSOR: - -! //printf("IDirectX::WndProcFullscreen - WM_SETCURSOR\n"); -! - // hide cursor - SetCursor(NULL); - break; - - case WM_ACTIVATE: - -! //printf("IDirectX::WndProcFullscreen - WM_ACTIVATE\n"); - - // handle focus switching - if (LOWORD(wParam)==WA_ACTIVE || LOWORD(wParam)==WA_CLICKACTIVE) - { -! //printf("window activation\n"); - - // hide cursor - SetCursor(NULL); ---- 2631,2656 ---- - - case WM_SETCURSOR: - -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::WndProcFullscreen - WM_SETCURSOR\n"); -! #endif -! - // hide cursor - SetCursor(NULL); - break; - - case WM_ACTIVATE: - -! #ifdef HAVEDPRINTF -! Dprintf("IDirectX::WndProcFullscreen - WM_ACTIVATE\n"); -! #endif - - // handle focus switching - if (LOWORD(wParam)==WA_ACTIVE || LOWORD(wParam)==WA_CLICKACTIVE) - { -! #ifdef HAVEDPRINTF -! Dprintf("window activation\n"); -! #endif - - // hide cursor - SetCursor(NULL); -*************** -*** 2380,2392 **** - } - else - { -! //printf("window deactivation\n"); -! - // check active window force flag - if (i && i->ForceActiveWindow) - { -! //printf("disabling window deactivation\n"); -! - // disable window deactivation - SetActiveWindow(hWnd); - SetForegroundWindow(hWnd); ---- 2660,2674 ---- - } - else - { -! #ifdef HAVEDPRINTF -! Dprintf("window deactivation\n"); -! #endif - // check active window force flag - if (i && i->ForceActiveWindow) - { -! #ifdef HAVEDPRINTF -! Dprintf("disabling window deactivation\n"); -! #endif - // disable window deactivation - SetActiveWindow(hWnd); - SetForegroundWindow(hWnd); -*************** -*** 2394,2401 **** - else - { - // allow window deactivation -! //printf("deactivating window\n"); -! - // check - if (i) - { ---- 2676,2684 ---- - else - { - // allow window deactivation -! #ifdef HAVEDPRINTF -! Dprintf("deactivating window\n"); -! #endif - // check - if (i) - { -*************** -*** 2437,2443 **** - } - - } -- break; - - default: - ---- 2720,2725 ---- -diff -c -r -d ptcnew/source/IDIRECTX.H ptc/source/Idirectx.h -*** ptcnew/source/IDIRECTX.H Sun Jun 07 16:26:52 1998 ---- ptc/source/Idirectx.h Wed Dec 16 18:07:06 1998 -*************** -*** 121,126 **** ---- 121,127 ---- - void *Buffer; // surface buffer - LPDIRECTDRAWSURFACE lpDDS; // directdraw surface - LPDIRECTDRAWSURFACE2 lpDDS2; // directdraw surface 2 -+ LPDIRECTDRAWSURFACE lpFDDS; // [RH] front directdraw surface (when double buffering) - int Count; // surface lock count - int Primary; // primary surface flag - IDirectX *LocalInterface; // local interface -*************** -*** 159,165 **** - void CloseDisplayWindow(); - - // primary management -! int InitPrimary(); - void ClosePrimary(); - - // modelist routines ---- 160,166 ---- - void CloseDisplayWindow(); - - // primary management -! int InitPrimary(int dblbuff); - void ClosePrimary(); - - // modelist routines -diff -c -r -d ptcnew/source/IWIN32.CPP ptc/source/Iwin32.cpp -*** ptcnew/source/IWIN32.CPP Mon Jun 08 13:09:24 1998 ---- ptc/source/Iwin32.cpp Wed Dec 16 18:09:46 1998 -*************** -*** 293,300 **** - - int IWin32::CreateManagedWindow(char wndclass[],uint style,int show,int x,int y,int width,int height) - { -! //printf("IWin32::CreateManagedWindow\n"); -! - // fail if not managed - if (!Managed) return 0; - ---- 293,299 ---- - - int IWin32::CreateManagedWindow(char wndclass[],uint style,int show,int x,int y,int width,int height) - { -! //printf("IWin32::CreateManagedWindow\n"); - // fail if not managed - if (!Managed) return 0; - -*************** -*** 360,373 **** - - // close window thread info event - if (info.event) CloseHandle(info.event); -! -! // just to be safe ... -! //printf("before sleep\n"); -! Sleep(200); -! //printf("after sleep\n"); - - // success -! //printf("IWin32::CreateManagedWindow ok\n"); - return 1; - } - ---- 359,372 ---- - - // close window thread info event - if (info.event) CloseHandle(info.event); -! -! // just to be safe... -! //printf("before sleep\n"); -! Sleep(200); -! //printf("after sleep\n"); - - // success -! //printf("IWin32::CreateManagedWindow ok\n"); - return 1; - } - -*************** -*** 417,429 **** - - // leave critical section - LeaveWindowCriticalSection(); -! -! //printf("waiting for window thread to exit...\n"); -! - // wait for window thread to exit - WindowThread->WaitForExit(INFINITE); - -! //printf("window thread has exited.\n"); - - // cleanup - delete WindowThread; ---- 416,430 ---- - - // leave critical section - LeaveWindowCriticalSection(); -! #ifdef HAVEDPRINTF -! Dprintf("waiting for window thread to exit..."); -! #endif - // wait for window thread to exit - WindowThread->WaitForExit(INFINITE); - -! #ifdef HAVEDPRINTF -! Dprintf("window thread has exited.\n"); -! #endif - - // cleanup - delete WindowThread; -*************** -*** 619,629 **** - SetFocus(window); - - // force window to foreground -! //printf("SetForegroundWindow\n"); - SetForegroundWindow(window); - - // todo: set event to indicate message loop is ready -! //printf("starting message loop\n"); - - // signal window event - SetEvent(info->event); ---- 620,630 ---- - SetFocus(window); - - // force window to foreground -! //printf("SetForegroundWindow\n"); - SetForegroundWindow(window); - - // todo: set event to indicate message loop is ready -! //printf("starting message loop\n"); - - // signal window event - SetEvent(info->event); -*************** -*** 631,638 **** - // message loop - MSG msg; - while (GetMessage(&msg,NULL,0,0)==TRUE) -! { -! //printf("translating message\n"); - TranslateMessage(&msg); - DispatchMessage(&msg); - } ---- 632,639 ---- - // message loop - MSG msg; - while (GetMessage(&msg,NULL,0,0)==TRUE) -! { -! //printf("translating message\n"); - TranslateMessage(&msg); - DispatchMessage(&msg); - } -*************** -*** 640,648 **** - else - { - // failure -! //printf("bad window create\n"); - SetEvent(info->event); -! //printf("SetEvent(info->event)\n"); - } - } - ---- 641,649 ---- - else - { - // failure -! //printf("bad window create\n"); - SetEvent(info->event); -! //printf("SetEvent(info->event)\n"); - } - } - -*************** -*** 659,667 **** - if (i) - { - switch (message) -! { - case WM_KEYDOWN: -! { - //printf("IWin32::WndProc - WM_KEYDOWN (i)\n"); - - // enter critical section ---- 660,668 ---- - if (i) - { - switch (message) -! { - case WM_KEYDOWN: -! { - //printf("IWin32::WndProc - WM_KEYDOWN (i)\n"); - - // enter critical section -*************** -*** 705,713 **** - // fill window with black - RECT rect; - GetClientRect(hWnd,&rect); -! HBRUSH black=GetStockObject(BLACK_BRUSH); - HDC dc=GetDC(hWnd); -! HBRUSH old=SelectObject(dc,black); - Rectangle(dc,rect.left,rect.top,rect.right,rect.bottom); - SelectObject(dc,old); - ReleaseDC(hWnd,dc); ---- 706,714 ---- - // fill window with black - RECT rect; - GetClientRect(hWnd,&rect); -! HBRUSH black=(HBRUSH)GetStockObject(BLACK_BRUSH); - HDC dc=GetDC(hWnd); -! HBRUSH old=(HBRUSH)SelectObject(dc,black); - Rectangle(dc,rect.left,rect.top,rect.right,rect.bottom); - SelectObject(dc,old); - ReleaseDC(hWnd,dc); -*************** -*** 757,765 **** - // fill window with black - RECT rect; - GetClientRect(hWnd,&rect); -! HBRUSH black=GetStockObject(BLACK_BRUSH); - HDC dc=GetDC(hWnd); -! HBRUSH old=SelectObject(dc,black); - Rectangle(dc,rect.left,rect.top,rect.right,rect.bottom); - SelectObject(dc,old); - ReleaseDC(hWnd,dc); ---- 758,766 ---- - // fill window with black - RECT rect; - GetClientRect(hWnd,&rect); -! HBRUSH black=(HBRUSH)GetStockObject(BLACK_BRUSH); - HDC dc=GetDC(hWnd); -! HBRUSH old=(HBRUSH)SelectObject(dc,black); - Rectangle(dc,rect.left,rect.top,rect.right,rect.bottom); - SelectObject(dc,old); - ReleaseDC(hWnd,dc); -*************** -*** 864,866 **** ---- 865,883 ---- - - - #endif -+ -+ -+ // [RH] Debugging printf for Win32 debuggers -+ #ifdef HAVEDPRINTF -+ void Dprintf (char *fmt, ...) -+ { -+ va_list argptr; -+ char outline[8192]; -+ -+ va_start (argptr, fmt); -+ vsprintf (outline, fmt, argptr); -+ va_end (argptr); -+ -+ OutputDebugString (outline); -+ } -+ #endif -\ No newline at end of file -diff -c -r -d ptcnew/source/source.dsp ptc/source/source.dsp -*** ptcnew/source/source.dsp Thu May 28 20:03:12 1998 ---- ptc/source/source.dsp Thu Nov 26 18:24:14 1998 -*************** -*** 61,74 **** - # PROP Intermediate_Dir "..\library\win32\vc5.x\debug" - # PROP Target_Dir "" - # ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -! # ADD CPP /nologo /G5 /MTd /W3 /GX /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c - # SUBTRACT CPP /YX - BSC32=bscmake.exe - # ADD BASE BSC32 /nologo - # ADD BSC32 /nologo - LIB32=link.exe -lib - # ADD BASE LIB32 /nologo -! # ADD LIB32 /nologo /out:"..\library\win32\vc5.x\debug.lib" - - !ENDIF - ---- 61,75 ---- - # PROP Intermediate_Dir "..\library\win32\vc5.x\debug" - # PROP Target_Dir "" - # ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -! # ADD CPP /nologo /G5 /MTd /W3 /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c - # SUBTRACT CPP /YX - BSC32=bscmake.exe - # ADD BASE BSC32 /nologo - # ADD BSC32 /nologo - LIB32=link.exe -lib - # ADD BASE LIB32 /nologo -! # ADD LIB32 /out:"..\library\win32\vc5.x\debug.lib" -! # SUBTRACT LIB32 /nologo - - !ENDIF - -*************** -*** 480,486 **** - InputName=mmx_16 - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! nasm $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - ---- 481,487 ---- - InputName=mmx_16 - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! d:\nasm\nasmw $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - -*************** -*** 511,517 **** - InputName=mmx_32 - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! nasm $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - ---- 512,518 ---- - InputName=mmx_32 - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! d:\nasm\nasmw $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - -*************** -*** 542,548 **** - InputName=mmx_8 - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! nasm $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - ---- 543,549 ---- - InputName=mmx_8 - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! d:\nasm\nasmw $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - -*************** -*** 573,579 **** - InputName=mmx_copy - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! nasm $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - ---- 574,580 ---- - InputName=mmx_copy - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! d:\nasm\nasmw $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - -*************** -*** 604,610 **** - InputName=mmx_fake - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! nasm $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - ---- 605,611 ---- - InputName=mmx_fake - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! d:\nasm\nasmw $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - -*************** -*** 635,641 **** - InputName=tables - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! nasm $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - ---- 636,642 ---- - InputName=tables - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! d:\nasm\nasmw $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - -*************** -*** 666,672 **** - InputName=x86_16 - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! nasm $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - ---- 667,673 ---- - InputName=x86_16 - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! d:\nasm\nasmw $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - -*************** -*** 697,703 **** - InputName=x86_32 - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! nasm $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - ---- 698,704 ---- - InputName=x86_32 - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! d:\nasm\nasmw $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - -*************** -*** 728,734 **** - InputName=x86_8 - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! nasm $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - ---- 729,735 ---- - InputName=x86_8 - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! d:\nasm\nasmw $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - -*************** -*** 759,765 **** - InputName=x86_copy - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! nasm $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - ---- 760,766 ---- - InputName=x86_copy - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! d:\nasm\nasmw $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - -*************** -*** 790,796 **** - InputName=x86_fake - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! nasm $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - ---- 791,797 ---- - InputName=x86_fake - - "$(OutDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" -! d:\nasm\nasmw $(InputPath) -f coff -o $(OutDir)\$(InputName).obj - - # End Custom Build - -Only in ptc/source: SOURCE.DSW -Only in ptc/source: SOURCE.ncb -Only in ptc/source: SOURCE.OPT -Only in ptc/source: SOURCE.PLG -Only in ptc/source: vc5x.ncb -Only in ptc/source: vc5x.opt diff --git a/readme.txt b/readme.txt index cc883acfbf..a2e8c7f89c 100644 --- a/readme.txt +++ b/readme.txt @@ -1,4 +1,4 @@ -This is the source code for ZDoom 1.17b released on 15 March 1999. +This is the source code for ZDoom 1.17c released on 5 May 1999. It is based on the Linux DOOM sources that were prepared by B. Krenheimer and generously released by John Carmack shortly before Christmas, 1997. If @@ -34,22 +34,15 @@ packages if you don't already have them. These are: MIDAS! I use a hack from NTDOOM that crashes with the DLL but not the static library. - Prometheus Truecolor Library (PTC) + Prometheus Truecolor Library (PTC) 0.72 http://www.gaffer.org/ptc - A special note about PTC is that the version available at gaffer.org - will not work unmodified with ZDoom. A context diff has been provided - along with a copy of GNU patch to generate a version of PTC that works - with ZDoom. To use it, you need to download the source code for PTC - 0.72 and the DirectX fix. Extract it to some directory (in my case - f:/games/doom/ptc/source), then using a DOS window, CD to that - directory and apply the ptc.diff file using the command line: + IMPORTANT NOTE! PTC 0.72 is no longer available at gaffer.org. If you + need it, e-mail me, and I can send you the source for it. - patch < ptc.diff - - Then you'll need to build at least the release build of PTC. The - batch files provided with PTC to do this will generate the library - somewhere in ../library. In my case, this ends up being + Once you get the source, you'll need to build at least the release + build of PTC. The batch files provided with PTC to do this will generate + the library somewhere in ../library. In my case, this ends up being d:/games/doom/ptc/library/win32/vc5.x. NASM (for the assembly files) @@ -72,11 +65,11 @@ assumptions about the development environment: PTC is installed in d:/games/doom/ptc. If you want to put things in different places, you'll need to adjust the -project file accordingly. +project file's settings accordingly. This code should also compile with Watcom C 10.6 (and presumably newer versions as well). If you use Watcom, please tell me if the following NASM -line generates object files far tmap.nas and misc.nas that are usable with +line generates object files for tmap.nas and misc.nas that are usable with the Watcom linker: nasm -o file.obj -f obj -d M_TARGET_WATCOM file.nas @@ -84,7 +77,7 @@ the Watcom linker: (The line I use is "nasm -o file.obj -f win32 file.nas" which works with Microsoft's linker, but not Watcom's.) -If you want to recompile the DOS code, you need DJGPP and allegro. Allegro +If you want to recompile the DOS code, you need DJGPP and Allegro. Allegro is only needed because MIDAS uses its interrupt wrappers. I don't use it for anything myself. The makefile.dj file can be used with make to generate either a release or debug build. (Create the appropriate @@ -92,4 +85,4 @@ subdirectories under code/djgpp first.) Randy Heit -rheit@usa.net \ No newline at end of file +rheit@iastate.edu \ No newline at end of file