- Added a StartConversation special that allows automatic activation of Strife
dialogs. - Added Thing_Raise special that allows Arch-Vile like resurrections from scripts or DECORATE states. - Added a RadiusDamageFactor property for actors. This replaces the hard coded factor of 0.25 for Hexen's players. - Added new SpawnProjectile function to ACS. It's the same as Thing_Projectile2 but the projectile is specified by name, not spawn ID. - Added MAPINFO option to set the compatibility flags. If this is done these explicit settings will take precedence over the compatflags CVAR. SVN r164 (trunk)
This commit is contained in:
parent
4325fb8993
commit
15681d0588
32 changed files with 473 additions and 261 deletions
282
src/m_menu.cpp
282
src/m_menu.cpp
|
|
@ -282,21 +282,21 @@ static oldmenu_t HereticMainDef =
|
|||
//
|
||||
// HEXEN "NEW GAME" MENU
|
||||
//
|
||||
static oldmenuitem_t ClassItems[] =
|
||||
{
|
||||
{ 1,1, 'f', "FIGHTER", SCClass },
|
||||
{ 1,1, 'c', "CLERIC", SCClass },
|
||||
{ 1,1, 'm', "MAGE", SCClass },
|
||||
{ 1,1, 'r', "RANDOM", SCClass } // [RH]
|
||||
};
|
||||
|
||||
static oldmenu_t ClassMenu =
|
||||
{
|
||||
4, ClassItems,
|
||||
DrawClassMenu,
|
||||
66, 58,
|
||||
0
|
||||
};
|
||||
static oldmenuitem_t ClassItems[] =
|
||||
{
|
||||
{ 1,1, 'f', "FIGHTER", SCClass },
|
||||
{ 1,1, 'c', "CLERIC", SCClass },
|
||||
{ 1,1, 'm', "MAGE", SCClass },
|
||||
{ 1,1, 'r', "RANDOM", SCClass } // [RH]
|
||||
};
|
||||
|
||||
static oldmenu_t ClassMenu =
|
||||
{
|
||||
4, ClassItems,
|
||||
DrawClassMenu,
|
||||
66, 58,
|
||||
0
|
||||
};
|
||||
|
||||
//
|
||||
// EPISODE SELECT
|
||||
|
|
@ -388,23 +388,23 @@ static oldmenu_t HereticSkillMenu =
|
|||
//
|
||||
// HEXEN SKILL SELECT
|
||||
//
|
||||
static oldmenuitem_t HexenSkillItems[] =
|
||||
{
|
||||
{ 1,1, '1', NULL, M_ChooseSkill },
|
||||
{ 1,1, '2', NULL, M_ChooseSkill },
|
||||
{ 1,1, '3', NULL, M_ChooseSkill },
|
||||
{ 1,1, '4', NULL, M_ChooseSkill },
|
||||
{ 1,1, '5', NULL, M_ChooseSkill }
|
||||
};
|
||||
|
||||
static oldmenu_t HexenSkillMenu =
|
||||
{
|
||||
5, HexenSkillItems,
|
||||
DrawHexenSkillMenu,
|
||||
120, 44,
|
||||
2
|
||||
};
|
||||
|
||||
static oldmenuitem_t HexenSkillItems[] =
|
||||
{
|
||||
{ 1,1, '1', NULL, M_ChooseSkill },
|
||||
{ 1,1, '2', NULL, M_ChooseSkill },
|
||||
{ 1,1, '3', NULL, M_ChooseSkill },
|
||||
{ 1,1, '4', NULL, M_ChooseSkill },
|
||||
{ 1,1, '5', NULL, M_ChooseSkill }
|
||||
};
|
||||
|
||||
static oldmenu_t HexenSkillMenu =
|
||||
{
|
||||
5, HexenSkillItems,
|
||||
DrawHexenSkillMenu,
|
||||
120, 44,
|
||||
2
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// [RH] Player Setup Menu
|
||||
|
|
@ -1525,53 +1525,53 @@ void M_NewGame(int choice)
|
|||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// DrawClassMenu
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
static void DrawClassMenu(void)
|
||||
{
|
||||
char name[9];
|
||||
int classnum;
|
||||
|
||||
static const char boxLumpName[3][7] =
|
||||
{
|
||||
"M_FBOX",
|
||||
"M_CBOX",
|
||||
"M_MBOX"
|
||||
};
|
||||
static const char walkLumpName[3][10] =
|
||||
{
|
||||
"M_FWALK%d",
|
||||
"M_CWALK%d",
|
||||
"M_MWALK%d"
|
||||
};
|
||||
|
||||
screen->DrawText (CR_UNTRANSLATED, 34, 24, "CHOOSE CLASS:", DTA_Clean, true, TAG_DONE);
|
||||
classnum = itemOn;
|
||||
if (classnum > 2)
|
||||
{
|
||||
classnum = (MenuTime>>2) % 3;
|
||||
}
|
||||
screen->DrawTexture (TexMan[boxLumpName[classnum]], 174, 8, DTA_Clean, true, TAG_DONE);
|
||||
|
||||
sprintf (name, walkLumpName[classnum], ((MenuTime >> 3) & 3) + 1);
|
||||
screen->DrawTexture (TexMan[name], 174+24, 8+12, DTA_Clean, true, TAG_DONE);
|
||||
}
|
||||
//==========================================================================
|
||||
//
|
||||
// DrawClassMenu
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
static void DrawClassMenu(void)
|
||||
{
|
||||
char name[9];
|
||||
int classnum;
|
||||
|
||||
static const char boxLumpName[3][7] =
|
||||
{
|
||||
"M_FBOX",
|
||||
"M_CBOX",
|
||||
"M_MBOX"
|
||||
};
|
||||
static const char walkLumpName[3][10] =
|
||||
{
|
||||
"M_FWALK%d",
|
||||
"M_CWALK%d",
|
||||
"M_MWALK%d"
|
||||
};
|
||||
|
||||
screen->DrawText (CR_UNTRANSLATED, 34, 24, "CHOOSE CLASS:", DTA_Clean, true, TAG_DONE);
|
||||
classnum = itemOn;
|
||||
if (classnum > 2)
|
||||
{
|
||||
classnum = (MenuTime>>2) % 3;
|
||||
}
|
||||
screen->DrawTexture (TexMan[boxLumpName[classnum]], 174, 8, DTA_Clean, true, TAG_DONE);
|
||||
|
||||
sprintf (name, walkLumpName[classnum], ((MenuTime >> 3) & 3) + 1);
|
||||
screen->DrawTexture (TexMan[name], 174+24, 8+12, DTA_Clean, true, TAG_DONE);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// PROC DrawSkillMenu
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
static void DrawHexenSkillMenu()
|
||||
{
|
||||
screen->DrawText (CR_UNTRANSLATED, 74, 16, "CHOOSE SKILL LEVEL:", DTA_Clean, true, TAG_DONE);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// PROC DrawSkillMenu
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
static void DrawHexenSkillMenu()
|
||||
{
|
||||
screen->DrawText (CR_UNTRANSLATED, 74, 16, "CHOOSE SKILL LEVEL:", DTA_Clean, true, TAG_DONE);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// M_Episode
|
||||
|
|
@ -1645,70 +1645,70 @@ void M_Episode (int choice)
|
|||
M_SetupNextMenu (&HereticSkillMenu);
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// SCClass
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
static void SCClass (int option)
|
||||
{
|
||||
if (netgame)
|
||||
{
|
||||
//==========================================================================
|
||||
//
|
||||
// SCClass
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
static void SCClass (int option)
|
||||
{
|
||||
if (netgame)
|
||||
{
|
||||
M_StartMessage (GStrings("NEWGAME"), NULL, false);
|
||||
return;
|
||||
}
|
||||
MenuPClass = option < 3 ? option : -1;
|
||||
switch (MenuPClass)
|
||||
{
|
||||
case 0/*PCLASS_FIGHTER*/:
|
||||
HexenSkillMenu.x = 120;
|
||||
HexenSkillItems[0].name = "SQUIRE";
|
||||
HexenSkillItems[1].name = "KNIGHT";
|
||||
HexenSkillItems[2].name = "WARRIOR";
|
||||
HexenSkillItems[3].name = "BERSERKER";
|
||||
HexenSkillItems[4].name = "TITAN";
|
||||
break;
|
||||
case 1/*PCLASS_CLERIC*/:
|
||||
HexenSkillMenu.x = 116;
|
||||
HexenSkillItems[0].name = "ALTAR BOY";
|
||||
HexenSkillItems[1].name = "ACOLYTE";
|
||||
HexenSkillItems[2].name = "PRIEST";
|
||||
HexenSkillItems[3].name = "CARDINAL";
|
||||
HexenSkillItems[4].name = "POPE";
|
||||
break;
|
||||
case 2/*PCLASS_MAGE*/:
|
||||
HexenSkillMenu.x = 112;
|
||||
HexenSkillItems[0].name = "APPRENTICE";
|
||||
HexenSkillItems[1].name = "ENCHANTER";
|
||||
HexenSkillItems[2].name = "SORCERER";
|
||||
HexenSkillItems[3].name = "WARLOCK";
|
||||
HexenSkillItems[4].name = "ARCHMAGE";
|
||||
break;
|
||||
case -1/*random*/: // [RH]
|
||||
// Since Hexen is "Heretic 2", use the Heretic skill
|
||||
// names when not playing as a specific class.
|
||||
HexenSkillMenu.x = HereticSkillMenu.x;
|
||||
HexenSkillItems[0].name = HereticSkillItems[0].name;
|
||||
HexenSkillItems[1].name = HereticSkillItems[1].name;
|
||||
HexenSkillItems[2].name = HereticSkillItems[2].name;
|
||||
HexenSkillItems[3].name = HereticSkillItems[3].name;
|
||||
HexenSkillItems[4].name = HereticSkillItems[4].name;
|
||||
break;
|
||||
}
|
||||
if (EpiDef.numitems > 1)
|
||||
{
|
||||
M_SetupNextMenu (&EpiDef);
|
||||
}
|
||||
else if (!EpisodeNoSkill[0])
|
||||
{
|
||||
M_SetupNextMenu (&HexenSkillMenu);
|
||||
}
|
||||
else
|
||||
{
|
||||
M_ChooseSkill(2);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
MenuPClass = option < 3 ? option : -1;
|
||||
switch (MenuPClass)
|
||||
{
|
||||
case 0/*PCLASS_FIGHTER*/:
|
||||
HexenSkillMenu.x = 120;
|
||||
HexenSkillItems[0].name = "SQUIRE";
|
||||
HexenSkillItems[1].name = "KNIGHT";
|
||||
HexenSkillItems[2].name = "WARRIOR";
|
||||
HexenSkillItems[3].name = "BERSERKER";
|
||||
HexenSkillItems[4].name = "TITAN";
|
||||
break;
|
||||
case 1/*PCLASS_CLERIC*/:
|
||||
HexenSkillMenu.x = 116;
|
||||
HexenSkillItems[0].name = "ALTAR BOY";
|
||||
HexenSkillItems[1].name = "ACOLYTE";
|
||||
HexenSkillItems[2].name = "PRIEST";
|
||||
HexenSkillItems[3].name = "CARDINAL";
|
||||
HexenSkillItems[4].name = "POPE";
|
||||
break;
|
||||
case 2/*PCLASS_MAGE*/:
|
||||
HexenSkillMenu.x = 112;
|
||||
HexenSkillItems[0].name = "APPRENTICE";
|
||||
HexenSkillItems[1].name = "ENCHANTER";
|
||||
HexenSkillItems[2].name = "SORCERER";
|
||||
HexenSkillItems[3].name = "WARLOCK";
|
||||
HexenSkillItems[4].name = "ARCHMAGE";
|
||||
break;
|
||||
case -1/*random*/: // [RH]
|
||||
// Since Hexen is "Heretic 2", use the Heretic skill
|
||||
// names when not playing as a specific class.
|
||||
HexenSkillMenu.x = HereticSkillMenu.x;
|
||||
HexenSkillItems[0].name = HereticSkillItems[0].name;
|
||||
HexenSkillItems[1].name = HereticSkillItems[1].name;
|
||||
HexenSkillItems[2].name = HereticSkillItems[2].name;
|
||||
HexenSkillItems[3].name = HereticSkillItems[3].name;
|
||||
HexenSkillItems[4].name = HereticSkillItems[4].name;
|
||||
break;
|
||||
}
|
||||
if (EpiDef.numitems > 1)
|
||||
{
|
||||
M_SetupNextMenu (&EpiDef);
|
||||
}
|
||||
else if (!EpisodeNoSkill[0])
|
||||
{
|
||||
M_SetupNextMenu (&HexenSkillMenu);
|
||||
}
|
||||
else
|
||||
{
|
||||
M_ChooseSkill(2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void M_Options (int choice)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue