diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game.cpp | 10 | ||||
-rw-r--r-- | src/keyboardconfig.cpp | 2 | ||||
-rw-r--r-- | src/keyboardconfig.h | 1 | ||||
-rw-r--r-- | src/localplayer.cpp | 5 | ||||
-rw-r--r-- | src/localplayer.h | 2 |
5 files changed, 17 insertions, 3 deletions
diff --git a/src/game.cpp b/src/game.cpp index 81f987376..0527e8481 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1148,6 +1148,7 @@ void Game::handleInput() && !NpcDialog::isAnyInputFocused() && (!player_node || !player_node->getAwayMode()) && !keyboard.isKeyActive(keyboard.KEY_TARGET) + && !keyboard.isKeyActive(keyboard.KEY_UNTARGET) && !InventoryWindow::isAnyInputFocused()) { // const int tKey = keyboard.getKeyIndex(event.key.keysym.sym); @@ -1611,7 +1612,8 @@ void Game::handleInput() keyboard.isKeyActive(keyboard.KEY_TARGET_CLOSEST) || keyboard.isKeyActive(keyboard.KEY_TARGET_NPC) || (joystick && joystick->buttonPressed(3))) && - !keyboard.isKeyActive(keyboard.KEY_TARGET)) + !keyboard.isKeyActive(keyboard.KEY_TARGET) && + !keyboard.isKeyActive(keyboard.KEY_UNTARGET)) { ActorSprite::Type currentTarget = ActorSprite::UNKNOWN; if (keyboard.isKeyActive(keyboard.KEY_TARGET_CLOSEST) || @@ -1663,10 +1665,12 @@ void Game::handleInput() // Stop attacking if the right key is pressed if (!keyboard.isKeyActive(keyboard.KEY_ATTACK) - && keyboard.isKeyActive(keyboard.KEY_TARGET) && !keyboard.isKeyActive(keyboard.KEY_EMOTE)) { - player_node->stopAttack(); + if (keyboard.isKeyActive(keyboard.KEY_TARGET)) + player_node->stopAttack(); + else if (keyboard.isKeyActive(keyboard.KEY_UNTARGET)) + player_node->untarget(); } if (joystick) diff --git a/src/keyboardconfig.cpp b/src/keyboardconfig.cpp index f9831c18f..fdc8201ca 100644 --- a/src/keyboardconfig.cpp +++ b/src/keyboardconfig.cpp @@ -61,6 +61,8 @@ static KeyData const keyData[KeyboardConfig::KEY_TOTAL] = { KeyboardConfig::GRP_DEFAULT}, {"keyTalk", SDLK_t, N_("Talk"), KeyboardConfig::GRP_DEFAULT}, {"keyTarget", SDLK_LSHIFT, N_("Stop Attack"), KeyboardConfig::GRP_DEFAULT}, + {"keyUnTarget", KeyboardConfig::KEY_NO_VALUE, + N_("Untarget"), KeyboardConfig::GRP_DEFAULT}, {"keyTargetClosest", SDLK_a, N_("Target Closest"), KeyboardConfig::GRP_DEFAULT}, {"keyTargetNPC", SDLK_n, N_("Target NPC"), KeyboardConfig::GRP_DEFAULT}, diff --git a/src/keyboardconfig.h b/src/keyboardconfig.h index bfec0fc87..b322eb6d1 100644 --- a/src/keyboardconfig.h +++ b/src/keyboardconfig.h @@ -174,6 +174,7 @@ class KeyboardConfig KEY_MOVE_TO_POINT, KEY_TALK, KEY_TARGET, + KEY_UNTARGET, KEY_TARGET_CLOSEST, KEY_TARGET_NPC, KEY_TARGET_PLAYER, diff --git a/src/localplayer.cpp b/src/localplayer.cpp index 324f3af54..721c71b1a 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -1389,6 +1389,11 @@ void LocalPlayer::stopAttack() if (mServerAttack && mAction == ATTACK) Net::getPlayerHandler()->stopAttack(); + untarget(); +} + +void LocalPlayer::untarget() +{ if (mAction == ATTACK) setAction(STAND); diff --git a/src/localplayer.h b/src/localplayer.h index 278598d58..bbd17f53c 100644 --- a/src/localplayer.h +++ b/src/localplayer.h @@ -152,6 +152,8 @@ class LocalPlayer : public Being, public ActorSpriteListener, void stopAttack(); + void untarget(); + /** * Returns the current target of the player. Returns 0 if no being is * currently targeted. |