Eric Robinson 3 weeks ago committed by GitHub
parent
commit
dc417f1f6a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 10
      Source/controls/plrctrls.cpp
  2. 29
      Source/diablo.cpp
  3. 4
      docs/CHANGELOG.md

10
Source/controls/plrctrls.cpp

@ -524,9 +524,13 @@ void Interact()
position = Monsters[pcursmonst].position.tile;
}
NetSendCmdLoc(MyPlayerId, true, myPlayer.UsesRangedWeapon() ? CMD_RATTACKXY : CMD_SATTACKXY, position);
LastPlayerAction = PlayerActionType::Attack;
return;
bool bNear = myPlayer.position.tile.WalkingDistance(position) < 2;
if (!(bNear && (pcursmonst != -1 || PlayerUnderCursor != nullptr))) {
NetSendCmdLoc(MyPlayerId, true, myPlayer.UsesRangedWeapon() ? CMD_RATTACKXY : CMD_SATTACKXY, position);
LastPlayerAction = PlayerActionType::Attack;
return;
}
}
if (pcursmonst != -1) {

29
Source/diablo.cpp

@ -246,8 +246,6 @@ bool ProcessInput()
void LeftMouseCmd(bool bShift)
{
bool bNear;
assert(!GetMainPanel().contains(MousePosition));
if (leveltype == DTYPE_TOWN) {
@ -265,17 +263,14 @@ void LeftMouseCmd(bool bShift)
}
const Player &myPlayer = *MyPlayer;
bNear = myPlayer.position.tile.WalkingDistance(cursPosition) < 2;
bool bNear = myPlayer.position.tile.WalkingDistance(cursPosition) < 2;
if (pcursitem != -1 && pcurs == CURSOR_HAND && !bShift) {
NetSendCmdLocParam1(true, invflag ? CMD_GOTOGETITEM : CMD_GOTOAGETITEM, cursPosition, pcursitem);
} else if (ObjectUnderCursor != nullptr && !ObjectUnderCursor->IsDisabled() && (!bShift || (bNear && ObjectUnderCursor->_oBreak == 1))) {
LastPlayerAction = PlayerActionType::OperateObject;
NetSendCmdLoc(MyPlayerId, true, pcurs == CURSOR_DISARM ? CMD_DISARMXY : CMD_OPOBJXY, cursPosition);
} else if (myPlayer.UsesRangedWeapon()) {
if (bShift) {
LastPlayerAction = PlayerActionType::Attack;
NetSendCmdLoc(MyPlayerId, true, CMD_RATTACKXY, cursPosition);
} else if (pcursmonst != -1) {
if (pcursmonst != -1) {
if (CanTalkToMonst(Monsters[pcursmonst])) {
NetSendCmdParam1(true, CMD_ATTACKID, pcursmonst);
} else {
@ -285,20 +280,18 @@ void LeftMouseCmd(bool bShift)
} else if (PlayerUnderCursor != nullptr && !PlayerUnderCursor->hasNoLife() && !myPlayer.friendlyMode) {
LastPlayerAction = PlayerActionType::AttackPlayerTarget;
NetSendCmdParam1(true, CMD_RATTACKPID, PlayerUnderCursor->getId());
} else if (bShift) {
LastPlayerAction = PlayerActionType::Attack;
NetSendCmdLoc(MyPlayerId, true, CMD_RATTACKXY, cursPosition);
}
} else {
if (bShift) {
if (pcursmonst != -1) {
if (CanTalkToMonst(Monsters[pcursmonst])) {
NetSendCmdParam1(true, CMD_ATTACKID, pcursmonst);
} else {
LastPlayerAction = PlayerActionType::Attack;
NetSendCmdLoc(MyPlayerId, true, CMD_SATTACKXY, cursPosition);
}
} else {
LastPlayerAction = PlayerActionType::Attack;
NetSendCmdLoc(MyPlayerId, true, CMD_SATTACKXY, cursPosition);
if (bShift && !(bNear && (pcursmonst != -1 || PlayerUnderCursor != nullptr))) {
if (pcursmonst != -1 && CanTalkToMonst(Monsters[pcursmonst])) {
NetSendCmdParam1(true, CMD_ATTACKID, pcursmonst);
return;
}
LastPlayerAction = PlayerActionType::Attack;
NetSendCmdLoc(MyPlayerId, true, CMD_SATTACKXY, cursPosition);
} else if (pcursmonst != -1) {
LastPlayerAction = PlayerActionType::AttackMonsterTarget;
NetSendCmdParam1(true, CMD_ATTACKID, pcursmonst);

4
docs/CHANGELOG.md

@ -9,6 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Features
#### Gameplay
- Stand ground attacks nearby targets instead of nearby tiles to improve accuracy
#### Graphics / Audio
- Better use of colors to differentiate players in multiplayer

Loading…
Cancel
Save