diff --git a/docs/rh-log.txt b/docs/rh-log.txt index e629bb6e38..6e3b0cdcc3 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,3 +1,8 @@ +November 3, 2007 (Changes by Graf Zahl) +- Added text color options to menu code so that the skill definitions can set + the color of the menu's text. +- Externalized skill settings to ZDoom.pk3 + November 2, 2007 (Changes by Graf Zahl) - Added skill definitions to MAPINFO. diff --git a/src/g_level.cpp b/src/g_level.cpp index a6477d5a90..24ebf9aa74 100644 --- a/src/g_level.cpp +++ b/src/g_level.cpp @@ -103,7 +103,6 @@ static void ClearLevelInfoStrings (level_info_t *linfo); static void ClearClusterInfoStrings (cluster_info_t *cinfo); static void ParseSkill (); static void G_VerifySkill(); -static void InitializeDefaultSkills(); static FRandom pr_classchoice ("RandomPlayerClassChoice"); @@ -524,12 +523,12 @@ void G_ParseMapInfo () int lump, lastlump = 0; atterm (G_UnloadMapInfo); - InitializeDefaultSkills(); // Parse the default MAPINFO for the current game. switch (gameinfo.gametype) { case GAME_Doom: + G_DoParseMapInfo (Wads.GetNumForFullName ("mapinfo/doomcommon.txt")); switch (gamemission) { case doom: @@ -576,7 +575,7 @@ void G_ParseMapInfo () } if (AllSkills.Size()==0) { - InitializeDefaultSkills(); + I_FatalError ("You cannot use clearskills in a MAPINFO if you do not define any new skills after it."); } } @@ -590,7 +589,7 @@ static void G_DoParseMapInfo (int lump) QWORD levelflags; SetLevelDefaults (&defaultinfo); - SC_OpenLumpNum (lump, "MAPINFO"); + SC_OpenLumpNum (lump, Wads.GetLumpFullName(lump)); HexenHack = false; while (SC_GetString ()) @@ -3050,6 +3049,7 @@ static void ParseSkill () skill.MenuNameIsLump = false; skill.MustConfirm = false; skill.shortcut=0; + skill.textcolor = CR_UNTRANSLATED; SC_MustGetString(); skill.name = sc_String; @@ -3111,6 +3111,13 @@ static void ParseSkill () skill.MenuName = sc_String; skill.MenuNameIsLump = false; } + else if (SC_Compare("PlayerClassName")) + { + SC_MustGetString (); + FName pc = sc_String; + SC_MustGetString (); + skill.MenuNamesForPlayerClass[pc]=sc_String; + } else if (SC_Compare("MenuLump")) { SC_MustGetString (); @@ -3121,6 +3128,24 @@ static void ParseSkill () { skill.MustConfirm = true; } + else if (SC_Compare("Shortcut")) + { + SC_MustGetString(); + skill.shortcut = tolower(sc_String[0]); + } + else if (SC_Compare("TextColor")) + { + SC_MustGetString(); + FString c; + c.Format("[%s]", sc_String); + const BYTE * cp = (BYTE*)c.GetChars(); + skill.textcolor = V_ParseFontColor(cp, 0, 0); + if (skill.textcolor == CR_UNDEFINED) + { + Printf("Undefined color '%s' in definition of skill %s\n", sc_String, skill.name.GetChars()); + skill.textcolor = CR_UNTRANSLATED; + } + } else { SC_UnGet (); @@ -3180,100 +3205,6 @@ int G_SkillProperty(ESkillProperty prop) return 0; } -static void InitializeDefaultSkills() -{ - FSkillInfo skill; - EGameType g = gameinfo.gametype; - - skill.shortcut=0; - - // sk_baby - skill.name = "baby"; - skill.AmmoFactor = (g & GAME_DoomStrife) ? FRACUNIT*2 : FRACUNIT*3/2; - skill.DamageFactor = FRACUNIT/2; - skill.FastMonsters = false; - skill.DisableCheats = false; - skill.EasyBossBrain = true; - skill.AutoUseHealth = true; - skill.RespawnCounter = 0; - skill.Aggressiveness = FRACUNIT; - skill.SpawnFilter = MTF_EASY; - skill.ACSReturn = 0; - skill.MenuName = g&GAME_DoomStrife ? "M_JKILL" : "MNU_WETNURSE"; - skill.MenuNameIsLump = !!(g&GAME_DoomStrife); - skill.MustConfirm = false; - if (g & GAME_Hexen) - { - skill.MenuNamesForPlayerClass["fighter"] = "MNU_SQUIRE"; - skill.MenuNamesForPlayerClass["cleric"] = "MNU_ALTARBOY"; - skill.MenuNamesForPlayerClass["mage"] = "MNU_APPRENTICE"; - } - AllSkills.Push(skill); - - // sk_easy - skill.name = "easy"; - skill.AmmoFactor = FRACUNIT; - skill.DamageFactor = FRACUNIT; - skill.EasyBossBrain = false; - skill.AutoUseHealth = false; - skill.RespawnCounter = 0; - skill.Aggressiveness = FRACUNIT; - skill.SpawnFilter = MTF_EASY; - skill.ACSReturn = 1; - skill.MenuName = g&GAME_DoomStrife ? "M_ROUGH" : "MNU_YELLOWBELLIES"; - if (g & GAME_Hexen) - { - skill.MenuNamesForPlayerClass["fighter"] = "MNU_KNIGHT"; - skill.MenuNamesForPlayerClass["cleric"] = "MNU_ACOLYTE"; - skill.MenuNamesForPlayerClass["mage"] = "MNU_ENCHANTER"; - } - AllSkills.Push(skill); - - // sk_normal - skill.name = "normal"; - skill.SpawnFilter = MTF_NORMAL; - skill.ACSReturn = 2; - skill.MenuName = g&GAME_DoomStrife ? "M_HURT" : "MNU_BRINGEST"; - if (g & GAME_Hexen) - { - skill.MenuNamesForPlayerClass["fighter"] = "MNU_WARRIOR"; - skill.MenuNamesForPlayerClass["cleric"] = "MNU_PRIEST"; - skill.MenuNamesForPlayerClass["mage"] = "MNU_SORCERER"; - } - AllSkills.Push(skill); - - // sk_hard - skill.name = "hard"; - skill.SpawnFilter = MTF_HARD; - skill.ACSReturn = 3; - skill.MenuName = g&GAME_DoomStrife ? "M_ULTRA" : "MNU_SMITE"; - if (g & GAME_Hexen) - { - skill.MenuNamesForPlayerClass["fighter"] = "MNU_BERSERKER"; - skill.MenuNamesForPlayerClass["cleric"] = "MNU_CARDINAL"; - skill.MenuNamesForPlayerClass["mage"] = "MNU_WARLOCK"; - } - AllSkills.Push(skill); - - // sk_nightmare - skill.name = "nightmare"; - skill.AmmoFactor = (g & GAME_DoomStrife) ? FRACUNIT*2 : FRACUNIT*3/2; - skill.DamageFactor = FRACUNIT; - skill.FastMonsters = true; - skill.DisableCheats = true; - skill.RespawnCounter = (g & GAME_Raven)? 0 : TICRATE * (g != GAME_Strife ? 12 : 16); - skill.Aggressiveness = FRACUNIT; - skill.ACSReturn = 4; - skill.MenuName = g&GAME_DoomStrife ? "M_NMARE" : "MNU_BLACKPLAGUE"; - skill.MustConfirm = true; - if (g & GAME_Hexen) - { - skill.MenuNamesForPlayerClass["fighter"] = "MNU_TITAN"; - skill.MenuNamesForPlayerClass["cleric"] = "MNU_POPE"; - skill.MenuNamesForPlayerClass["mage"] = "MNU_ARCHMAGE"; - } - AllSkills.Push(skill); -} void G_VerifySkill() { diff --git a/src/g_level.h b/src/g_level.h index 4b37a14c95..85a456264d 100644 --- a/src/g_level.h +++ b/src/g_level.h @@ -390,6 +390,7 @@ struct FSkillInfo bool MenuNameIsLump; bool MustConfirm; char shortcut; + int textcolor; FSkillInfo() {} FSkillInfo(const FSkillInfo &other) @@ -414,6 +415,7 @@ struct FSkillInfo MenuNameIsLump = other.MenuNameIsLump; MustConfirm = other.MustConfirm; shortcut = other.shortcut; + textcolor = other.textcolor; return *this; } }; diff --git a/src/m_menu.cpp b/src/m_menu.cpp index 1c80fd6f65..605c6b8130 100644 --- a/src/m_menu.cpp +++ b/src/m_menu.cpp @@ -248,12 +248,12 @@ static int epi; // Selected episode // static oldmenuitem_t MainMenu[]= { - {1,0,'n',"M_NGAME",M_NewGame}, - {1,0,'l',"M_LOADG",M_LoadGame}, - {1,0,'s',"M_SAVEG",M_SaveGame}, - {1,0,'o',"M_OPTION",M_Options}, // [RH] Moved - {1,0,'r',"M_RDTHIS",M_ReadThis}, // Another hickup with Special edition. - {1,0,'q',"M_QUITG",M_QuitDOOM} + {1,0,'n',"M_NGAME",M_NewGame, CR_UNTRANSLATED}, + {1,0,'l',"M_LOADG",M_LoadGame, CR_UNTRANSLATED}, + {1,0,'s',"M_SAVEG",M_SaveGame, CR_UNTRANSLATED}, + {1,0,'o',"M_OPTION",M_Options, CR_UNTRANSLATED}, // [RH] Moved + {1,0,'r',"M_RDTHIS",M_ReadThis, CR_UNTRANSLATED}, // Another hickup with Special edition. + {1,0,'q',"M_QUITG",M_QuitDOOM, CR_UNTRANSLATED} }; static oldmenu_t MainDef = @@ -270,11 +270,11 @@ static oldmenu_t MainDef = // static oldmenuitem_t HereticMainMenu[] = { - {1,1,'n',"MNU_NEWGAME",M_NewGame}, - {1,1,'o',"MNU_OPTIONS",M_Options}, - {1,1,'f',"MNU_GAMEFILES",M_GameFiles}, - {1,1,'i',"MNU_INFO",M_ReadThis}, - {1,1,'q',"MNU_QUITGAME",M_QuitDOOM} + {1,1,'n',"MNU_NEWGAME",M_NewGame, CR_UNTRANSLATED}, + {1,1,'o',"MNU_OPTIONS",M_Options, CR_UNTRANSLATED}, + {1,1,'f',"MNU_GAMEFILES",M_GameFiles, CR_UNTRANSLATED}, + {1,1,'i',"MNU_INFO",M_ReadThis, CR_UNTRANSLATED}, + {1,1,'q',"MNU_QUITGAME",M_QuitDOOM, CR_UNTRANSLATED} }; static oldmenu_t HereticMainDef = @@ -291,10 +291,10 @@ static oldmenu_t HereticMainDef = // static oldmenuitem_t ClassItems[] = { - { 1,1, 'f', "MNU_FIGHTER", SCClass }, - { 1,1, 'c', "MNU_CLERIC", SCClass }, - { 1,1, 'm', "MNU_MAGE", SCClass }, - { 1,1, 'r', "MNU_RANDOM", SCClass } // [RH] + { 1,1, 'f', "MNU_FIGHTER", SCClass, CR_UNTRANSLATED }, + { 1,1, 'c', "MNU_CLERIC", SCClass, CR_UNTRANSLATED }, + { 1,1, 'm', "MNU_MAGE", SCClass, CR_UNTRANSLATED }, + { 1,1, 'r', "MNU_RANDOM", SCClass, CR_UNTRANSLATED } // [RH] }; static oldmenu_t ClassMenu = @@ -310,14 +310,14 @@ static oldmenu_t ClassMenu = // oldmenuitem_t ClassMenuItems[8] = { - {1,1,0, NULL, M_ChooseClass }, - {1,1,0, NULL, M_ChooseClass }, - {1,1,0, NULL, M_ChooseClass }, - {1,1,0, NULL, M_ChooseClass }, - {1,1,0, NULL, M_ChooseClass }, - {1,1,0, NULL, M_ChooseClass }, - {1,1,0, NULL, M_ChooseClass }, - {1,1,0, NULL, M_ChooseClass }, + {1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED }, + {1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED }, + {1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED }, + {1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED }, + {1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED }, + {1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED }, + {1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED }, + {1,1,0, NULL, M_ChooseClass, CR_UNTRANSLATED }, }; oldmenu_t ClassMenuDef = @@ -334,14 +334,14 @@ oldmenu_t ClassMenuDef = // oldmenuitem_t EpisodeMenu[MAX_EPISODES] = { - {1,0,0, NULL, M_Episode}, - {1,0,0, NULL, M_Episode}, - {1,0,0, NULL, M_Episode}, - {1,0,0, NULL, M_Episode}, - {1,0,0, NULL, M_Episode}, - {1,0,0, NULL, M_Episode}, - {1,0,0, NULL, M_Episode}, - {1,0,0, NULL, M_Episode}, + {1,0,0, NULL, M_Episode, CR_UNTRANSLATED}, + {1,0,0, NULL, M_Episode, CR_UNTRANSLATED}, + {1,0,0, NULL, M_Episode, CR_UNTRANSLATED}, + {1,0,0, NULL, M_Episode, CR_UNTRANSLATED}, + {1,0,0, NULL, M_Episode, CR_UNTRANSLATED}, + {1,0,0, NULL, M_Episode, CR_UNTRANSLATED}, + {1,0,0, NULL, M_Episode, CR_UNTRANSLATED}, + {1,0,0, NULL, M_Episode, CR_UNTRANSLATED}, }; char EpisodeMaps[MAX_EPISODES][8]; @@ -361,8 +361,8 @@ oldmenu_t EpiDef = // static oldmenuitem_t FilesItems[] = { - {1,1,'l',"MNU_LOADGAME",M_LoadGame}, - {1,1,'s',"MNU_SAVEGAME",M_SaveGame} + {1,1,'l',"MNU_LOADGAME",M_LoadGame, CR_UNTRANSLATED}, + {1,1,'s',"MNU_SAVEGAME",M_SaveGame, CR_UNTRANSLATED} }; static oldmenu_t FilesMenu = @@ -378,14 +378,14 @@ static oldmenu_t FilesMenu = // DOOM SKILL SELECT // static oldmenuitem_t SkillSelectMenu[]={ - { 1, 0, 0, "", M_ChooseSkill}, - { 1, 0, 0, "", M_ChooseSkill}, - { 1, 0, 0, "", M_ChooseSkill}, - { 1, 0, 0, "", M_ChooseSkill}, - { 1, 0, 0, "", M_ChooseSkill}, - { 1, 0, 0, "", M_ChooseSkill}, - { 1, 0, 0, "", M_ChooseSkill}, - { 1, 0, 0, "", M_ChooseSkill}, + { 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED}, + { 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED}, + { 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED}, + { 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED}, + { 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED}, + { 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED}, + { 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED}, + { 1, 0, 0, "", M_ChooseSkill, CR_UNTRANSLATED}, }; static oldmenu_t SkillDef = @@ -413,6 +413,17 @@ void M_StartupSkillMenu(const char *playerclass) { SkillDef.x = 38; SkillDef.y = 30; + + if (gameinfo.gametype == GAME_Hexen) + { + HexenSkillMenu.x = 38; + if (playerclass != NULL) + { + if (!stricmp(playerclass, "fighter")) HexenSkillMenu.x = 120; + else if (!stricmp(playerclass, "cleric")) HexenSkillMenu.x = 116; + else if (!stricmp(playerclass, "mage")) HexenSkillMenu.x = 112; + } + } } SkillDef.numitems = HexenSkillMenu.numitems = 0; for(int i=0;iGetChars()[0]); + if (skill.shortcut==0) + SkillSelectMenu[i].alphaKey = tolower(SkillSelectMenu[i].name[0]); } } SkillDef.numitems++; @@ -439,11 +453,6 @@ void M_StartupSkillMenu(const char *playerclass) // Hexen needs some manual coordinate adjustments based on player class if (gameinfo.gametype == GAME_Hexen) { - if (!stricmp(playerclass, "fighter")) HexenSkillMenu.x = 120; - else if (!stricmp(playerclass, "cleric")) HexenSkillMenu.x = 116; - else if (!stricmp(playerclass, "mage")) HexenSkillMenu.x = 112; - else HexenSkillMenu.x = 38; - M_SetupNextMenu(&HexenSkillMenu); } else @@ -456,15 +465,15 @@ void M_StartupSkillMenu(const char *playerclass) // static oldmenuitem_t PlayerSetupMenu[] = { - { 1,0,'n',NULL,M_EditPlayerName}, - { 2,0,'t',NULL,M_ChangePlayerTeam}, - { 2,0,'r',NULL,M_SlidePlayerRed}, - { 2,0,'g',NULL,M_SlidePlayerGreen}, - { 2,0,'b',NULL,M_SlidePlayerBlue}, - { 2,0,'c',NULL,M_ChangeClass}, - { 2,0,'s',NULL,M_ChangeSkin}, - { 2,0,'e',NULL,M_ChangeGender}, - { 2,0,'a',NULL,M_ChangeAutoAim} + { 1,0,'n',NULL,M_EditPlayerName, CR_UNTRANSLATED}, + { 2,0,'t',NULL,M_ChangePlayerTeam, CR_UNTRANSLATED}, + { 2,0,'r',NULL,M_SlidePlayerRed, CR_UNTRANSLATED}, + { 2,0,'g',NULL,M_SlidePlayerGreen, CR_UNTRANSLATED}, + { 2,0,'b',NULL,M_SlidePlayerBlue, CR_UNTRANSLATED}, + { 2,0,'c',NULL,M_ChangeClass, CR_UNTRANSLATED}, + { 2,0,'s',NULL,M_ChangeSkin, CR_UNTRANSLATED}, + { 2,0,'e',NULL,M_ChangeGender, CR_UNTRANSLATED}, + { 2,0,'a',NULL,M_ChangeAutoAim, CR_UNTRANSLATED} }; static oldmenu_t PSetupDef = @@ -498,14 +507,14 @@ static oldmenu_t ReadDef = // static oldmenuitem_t LoadMenu[]= { - {1,0,'1',NULL, NULL}, - {1,0,'2',NULL, NULL}, - {1,0,'3',NULL, NULL}, - {1,0,'4',NULL, NULL}, - {1,0,'5',NULL, NULL}, - {1,0,'6',NULL, NULL}, - {1,0,'7',NULL, NULL}, - {1,0,'8',NULL, NULL}, + {1,0,'1',NULL, NULL, CR_UNTRANSLATED}, + {1,0,'2',NULL, NULL, CR_UNTRANSLATED}, + {1,0,'3',NULL, NULL, CR_UNTRANSLATED}, + {1,0,'4',NULL, NULL, CR_UNTRANSLATED}, + {1,0,'5',NULL, NULL, CR_UNTRANSLATED}, + {1,0,'6',NULL, NULL, CR_UNTRANSLATED}, + {1,0,'7',NULL, NULL, CR_UNTRANSLATED}, + {1,0,'8',NULL, NULL, CR_UNTRANSLATED}, }; static oldmenu_t LoadDef = @@ -522,14 +531,14 @@ static oldmenu_t LoadDef = // static oldmenuitem_t SaveMenu[] = { - {1,0,'1',NULL, NULL}, - {1,0,'2',NULL, NULL}, - {1,0,'3',NULL, NULL}, - {1,0,'4',NULL, NULL}, - {1,0,'5',NULL, NULL}, - {1,0,'6',NULL, NULL}, - {1,0,'7',NULL, NULL}, - {1,0,'8',NULL, NULL}, + {1,0,'1',NULL, NULL, CR_UNTRANSLATED}, + {1,0,'2',NULL, NULL, CR_UNTRANSLATED}, + {1,0,'3',NULL, NULL, CR_UNTRANSLATED}, + {1,0,'4',NULL, NULL, CR_UNTRANSLATED}, + {1,0,'5',NULL, NULL, CR_UNTRANSLATED}, + {1,0,'6',NULL, NULL, CR_UNTRANSLATED}, + {1,0,'7',NULL, NULL, CR_UNTRANSLATED}, + {1,0,'8',NULL, NULL, CR_UNTRANSLATED}, }; static oldmenu_t SaveDef = @@ -3129,11 +3138,14 @@ void M_Drawer () { if (currentMenu->menuitems[i].fulltext) { - int color = CR_UNTRANSLATED; - if ((currentMenu == &EpiDef || currentMenu == &ClassMenuDef) && - gameinfo.gametype == GAME_Doom) + int color = currentMenu->menuitems[i].textcolor; + if (color == CR_UNTRANSLATED) { - color = CR_RED; + // The default DBIGFONT is white but Doom's default should be red. + if (gameinfo.gametype == GAME_Doom) + { + color = CR_RED; + } } screen->DrawText (color, x, y, GStrings(currentMenu->menuitems[i].name), diff --git a/src/m_menu.h b/src/m_menu.h index a90a5b67fb..95c4ebd8a1 100644 --- a/src/m_menu.h +++ b/src/m_menu.h @@ -189,6 +189,7 @@ typedef struct // if status = 2, // choice=0:leftarrow,1:rightarrow void (*routine)(int choice); + int textcolor; } oldmenuitem_t; typedef struct oldmenu_s diff --git a/wadsrc/mapinfo/doomcommon.txt b/wadsrc/mapinfo/doomcommon.txt new file mode 100644 index 0000000000..32618cddde --- /dev/null +++ b/wadsrc/mapinfo/doomcommon.txt @@ -0,0 +1,32 @@ +skill baby + AmmoFactor 2 + DamageFactor 0.5 + EasyBossBrain + SpawnFilter "Easy" + MenuLump "M_JKILL" + Shortcut i + +skill easy + SpawnFilter "Easy" + MenuLump "M_ROUGH" + Shortcut h + +skill normal + SpawnFilter "Normal" + MenuLump "M_HURT" + Shortcut h + +skill hard + SpawnFilter "Normal" + MenuLump "M_ULTRA" + Shortcut u + +skill nightmare + AmmoFactor 2 + FastMonsters + DisableCheats + RespawnTime 12 + SpawnFilter "Hard" + MenuLump "M_NMARE" + MustConfirm + Shortcut n diff --git a/wadsrc/mapinfo/heretic.txt b/wadsrc/mapinfo/heretic.txt index c5ea6ae1e0..b2354c3be5 100644 --- a/wadsrc/mapinfo/heretic.txt +++ b/wadsrc/mapinfo/heretic.txt @@ -1,5 +1,34 @@ // MAPINFO for Heretic (Shareware and Retail) +skill baby + AmmoFactor 1.5 + DamageFactor 0.5 + EasyBossBrain + SpawnFilter "Easy" + MenuName "MNU_WETNURSE" + +skill easy + SpawnFilter "Easy" + MenuName "MNU_YELLOWBELLIES" + +skill normal + SpawnFilter "Normal" + MenuName "MNU_BRINGEST" + +skill hard + SpawnFilter "Normal" + MenuName "MNU_SMITE" + +skill nightmare + AmmoFactor 1.5 + FastMonsters + DisableCheats + SpawnFilter "Hard" + MenuName "MNU_BLACKPLAGUE" + MustConfirm + + + // Episode 1 map E1M1 lookup HHUSTR_E1M1 diff --git a/wadsrc/mapinfo/hexen.txt b/wadsrc/mapinfo/hexen.txt index 0aa4628372..ffea307289 100644 --- a/wadsrc/mapinfo/hexen.txt +++ b/wadsrc/mapinfo/hexen.txt @@ -1,6 +1,50 @@ // A bare-bones MAPINFO for Hexen. // Most of the MAPINFO is still in hexen.wad. +skill baby + AmmoFactor 1.5 + DamageFactor 0.5 + EasyBossBrain + SpawnFilter "Easy" + MenuName "MNU_WETNURSE" + PlayerClassName "fighter" "MNU_SQUIRE" + PlayerClassName "cleric" "MNU_ALTARBOY" + PlayerClassName "mage" "MNU_APPRENTICE" + + +skill easy + SpawnFilter "Easy" + MenuName "MNU_YELLOWBELLIES" + PlayerClassName "fighter" "MNU_KNIGHT" + PlayerClassName "cleric" "MNU_ACOLYTE" + PlayerClassName "mage" "MNU_ENCHANTER" + +skill normal + SpawnFilter "Normal" + MenuName "MNU_BRINGEST" + PlayerClassName "fighter" "MNU_WARRIOR" + PlayerClassName "cleric" "MNU_PRIEST" + PlayerClassName "mage" "MNU_SORCERER" + +skill hard + SpawnFilter "Normal" + MenuName "MNU_SMITE" + PlayerClassName "fighter" "MNU_BERSERKER" + PlayerClassName "cleric" "MNU_CARDINAL" + PlayerClassName "mage" "MNU_WARLOCK" + +skill nightmare + AmmoFactor 1.5 + FastMonsters + DisableCheats + SpawnFilter "Hard" + MenuName "MNU_BLACKPLAGUE" + PlayerClassName "fighter" "MNU_TITAN" + PlayerClassName "cleric" "MNU_POPE" + PlayerClassName "mage" "MNU_ARCHMAGE" + MustConfirm + + clusterdef 1 hub exittext clus1msg diff --git a/wadsrc/mapinfo/strife.txt b/wadsrc/mapinfo/strife.txt index ce02ac6b96..d81755931d 100644 --- a/wadsrc/mapinfo/strife.txt +++ b/wadsrc/mapinfo/strife.txt @@ -1,5 +1,38 @@ // MAPINFO for Strife (full version and teaser) +skill baby + AmmoFactor 2 + DamageFactor 0.5 + EasyBossBrain + SpawnFilter "Easy" + MenuLump "M_JKILL" + Shortcut t + +skill easy + SpawnFilter "Easy" + MenuLump "M_ROUGH" + Shortcut r + +skill normal + SpawnFilter "Normal" + MenuLump "M_HURT" + Shortcut v + +skill hard + SpawnFilter "Normal" + MenuLump "M_ULTRA" + Shortcut e + +skill nightmare + AmmoFactor 2 + FastMonsters + DisableCheats + RespawnTime 16 + SpawnFilter "Hard" + MenuLump "M_NMARE" + MustConfirm + Shortcut b + defaultmap forcenoskystretch strifefallingdamage diff --git a/wadsrc/zdoom.lst b/wadsrc/zdoom.lst index 3039cea292..90df6f7fcb 100644 --- a/wadsrc/zdoom.lst +++ b/wadsrc/zdoom.lst @@ -221,9 +221,10 @@ sounds/railgf1.flac railgunfire.flac ======== # Mapinfos +mapinfo/doomcommon.txt mapinfo/doomcommon.txt mapinfo/doom1.txt mapinfo/doom1.txt mapinfo/doom2.txt mapinfo/doom2.txt -mapinfo/plutonia.txt mapinfo/plutonia.txt +mapinfo/plutonia.txt mapinfo/plutonia.txt mapinfo/tnt.txt mapinfo/tnt.txt mapinfo/heretic.txt mapinfo/heretic.txt mapinfo/hexen.txt mapinfo/hexen.txt