ref: 7e118463ae5ef0752ab0ae509eecfe409b82bdc3
parent: ecf457ddcbf481b451f37474b057a06e7d843b66
parent: ae2c47344237e341a979adba4b2a20b68e4de559
author: Simon Howard <[email protected]>
date: Thu Mar 13 06:20:39 EDT 2014
Merge pull request #356 from fabiangreffrath/keybind-hexen Allow to rebind artifact keys in Hexen.
--- a/src/hexen/g_game.c
+++ b/src/hexen/g_game.c
@@ -396,46 +396,46 @@
}
// Artifact hot keys
- if (gamekeydown[KEY_BACKSPACE] && !cmd->arti)
+ if (gamekeydown[key_arti_all] && !cmd->arti)
{
- gamekeydown[KEY_BACKSPACE] = false; // Use one of each artifact
+ gamekeydown[key_arti_all] = false; // Use one of each artifact
cmd->arti = NUMARTIFACTS;
}
- else if (gamekeydown['\\'] && !cmd->arti
+ else if (gamekeydown[key_arti_health] && !cmd->arti
&& (players[consoleplayer].mo->health < MAXHEALTH))
{
- gamekeydown['\\'] = false;
+ gamekeydown[key_arti_health] = false;
cmd->arti = arti_health;
}
- else if (gamekeydown['0'] && !cmd->arti)
+ else if (gamekeydown[key_arti_poisonbag] && !cmd->arti)
{
- gamekeydown['0'] = false;
+ gamekeydown[key_arti_poisonbag] = false;
cmd->arti = arti_poisonbag;
}
- else if (gamekeydown['9'] && !cmd->arti)
+ else if (gamekeydown[key_arti_blastradius] && !cmd->arti)
{
- gamekeydown['9'] = false;
+ gamekeydown[key_arti_blastradius] = false;
cmd->arti = arti_blastradius;
}
- else if (gamekeydown['8'] && !cmd->arti)
+ else if (gamekeydown[key_arti_teleport] && !cmd->arti)
{
- gamekeydown['8'] = false;
+ gamekeydown[key_arti_teleport] = false;
cmd->arti = arti_teleport;
}
- else if (gamekeydown['7'] && !cmd->arti)
+ else if (gamekeydown[key_arti_teleportother] && !cmd->arti)
{
- gamekeydown['7'] = false;
+ gamekeydown[key_arti_teleportother] = false;
cmd->arti = arti_teleportother;
}
- else if (gamekeydown['6'] && !cmd->arti)
+ else if (gamekeydown[key_arti_egg] && !cmd->arti)
{
- gamekeydown['6'] = false;
+ gamekeydown[key_arti_egg] = false;
cmd->arti = arti_egg;
}
- else if (gamekeydown['5'] && !cmd->arti
+ else if (gamekeydown[key_arti_invulnerability] && !cmd->arti
&& !players[consoleplayer].powers[pw_invulnerability])
{
- gamekeydown['5'] = false;
+ gamekeydown[key_arti_invulnerability] = false;
cmd->arti = arti_invulnerability;
}
--- a/src/m_config.c
+++ b/src/m_config.c
@@ -1298,6 +1298,70 @@
CONFIG_VARIABLE_KEY(key_nextweapon),
//!
+ // @game hexen
+ //
+ // Key to use one of each artifact.
+ //
+
+ CONFIG_VARIABLE_KEY(key_arti_all),
+
+ //!
+ // @game hexen
+ //
+ // Key to use "quartz flask" artifact.
+ //
+
+ CONFIG_VARIABLE_KEY(key_arti_health),
+
+ //!
+ // @game hexen
+ //
+ // Key to use "flechette" artifact.
+ //
+
+ CONFIG_VARIABLE_KEY(key_arti_poisonbag),
+
+ //!
+ // @game hexen
+ //
+ // Key to use "disc of repulsion" artifact.
+ //
+
+ CONFIG_VARIABLE_KEY(key_arti_blastradius),
+
+ //!
+ // @game hexen
+ //
+ // Key to use "chaos device" artifact.
+ //
+
+ CONFIG_VARIABLE_KEY(key_arti_teleport),
+
+ //!
+ // @game hexen
+ //
+ // Key to use "banishment device" artifact.
+ //
+
+ CONFIG_VARIABLE_KEY(key_arti_teleportother),
+
+ //!
+ // @game hexen
+ //
+ // Key to use "porkalator" artifact.
+ //
+
+ CONFIG_VARIABLE_KEY(key_arti_egg),
+
+ //!
+ // @game hexen
+ //
+ // Key to use "icon of the defender" artifact.
+ //
+
+ CONFIG_VARIABLE_KEY(key_arti_invulnerability),
+
+ //!
// Key to re-display last message.
//
--- a/src/m_controls.c
+++ b/src/m_controls.c
@@ -67,6 +67,15 @@
int key_jump = '/';
+int key_arti_all = KEY_BACKSPACE;
+int key_arti_health = '\\';
+int key_arti_poisonbag = '0';
+int key_arti_blastradius = '9';
+int key_arti_teleport = '8';
+int key_arti_teleportother = '7';
+int key_arti_egg = '6';
+int key_arti_invulnerability = '5';
+
//
// Strife key controls
//
@@ -252,6 +261,15 @@
M_BindVariable("key_jump", &key_jump);
M_BindVariable("mouseb_jump", &mousebjump);
M_BindVariable("joyb_jump", &joybjump);
+
+ M_BindVariable("key_arti_all", &key_arti_all);
+ M_BindVariable("key_arti_health", &key_arti_health);
+ M_BindVariable("key_arti_poisonbag", &key_arti_poisonbag);
+ M_BindVariable("key_arti_blastradius", &key_arti_blastradius);
+ M_BindVariable("key_arti_teleport", &key_arti_teleport);
+ M_BindVariable("key_arti_teleportother", &key_arti_teleportother);
+ M_BindVariable("key_arti_egg", &key_arti_egg);
+ M_BindVariable("key_arti_invulnerability", &key_arti_invulnerability);
}
void M_BindStrifeControls(void)
--- a/src/m_controls.h
+++ b/src/m_controls.h
@@ -75,6 +75,15 @@
extern int key_weapon7;
extern int key_weapon8;
+extern int key_arti_all;
+extern int key_arti_health;
+extern int key_arti_poisonbag;
+extern int key_arti_blastradius;
+extern int key_arti_teleport;
+extern int key_arti_teleportother;
+extern int key_arti_egg;
+extern int key_arti_invulnerability;
+
extern int key_demo_quit;
extern int key_spy;
extern int key_prevweapon;
--- a/src/setup/keyboard.c
+++ b/src/setup/keyboard.c
@@ -49,6 +49,10 @@
&key_weapon1, &key_weapon2, &key_weapon3,
&key_weapon4, &key_weapon5, &key_weapon6,
&key_weapon7, &key_weapon8,
+ &key_arti_all, &key_arti_health, &key_arti_poisonbag,
+ &key_arti_blastradius, &key_arti_teleport,
+ &key_arti_teleportother, &key_arti_egg,
+ &key_arti_invulnerability,
&key_prevweapon, &key_nextweapon, NULL };
static int *menu_nav[] = { &key_menu_activate, &key_menu_up, &key_menu_down,
@@ -184,7 +188,7 @@
table = TXT_NewTable(2);
- TXT_SetColumnWidths(table, 20, 9);
+ TXT_SetColumnWidths(table, 21, 9);
if (extra_keys)
{
@@ -228,6 +232,20 @@
else
{
AddKeyControl(table, "Use artifact", &key_useartifact);
+ }
+
+ if (gamemission == hexen)
+ {
+ AddSectionLabel(table, "Artifacts", true);
+
+ AddKeyControl(table, "One of each", &key_arti_all);
+ AddKeyControl(table, "Quartz Flask", &key_arti_health);
+ AddKeyControl(table, "Flechette", &key_arti_poisonbag);
+ AddKeyControl(table, "Disc of Repulsion", &key_arti_blastradius);
+ AddKeyControl(table, "Chaos Device", &key_arti_teleport);
+ AddKeyControl(table, "Banishment Device", &key_arti_teleportother);
+ AddKeyControl(table, "Porkalator", &key_arti_egg);
+ AddKeyControl(table, "Icon of the Defender", &key_arti_invulnerability);
}
}
else