combat: increase check-wall distance when attacking enemies (ref #620)
This commit is contained in:
parent
374cd015f9
commit
9fe9e08dfa
3 changed files with 14 additions and 11 deletions
|
|
@ -402,9 +402,9 @@ private:
|
||||||
bool canStrafeRight (TraceResult *tr);
|
bool canStrafeRight (TraceResult *tr);
|
||||||
bool isBlockedLeft ();
|
bool isBlockedLeft ();
|
||||||
bool isBlockedRight ();
|
bool isBlockedRight ();
|
||||||
bool checkWallOnLeft ();
|
bool checkWallOnLeft (float distance = 40.0f);
|
||||||
bool checkWallOnRight ();
|
bool checkWallOnRight (float distance = 40.0f);
|
||||||
bool checkWallOnBehind ();
|
bool checkWallOnBehind (float distance = 40.0f);
|
||||||
bool updateNavigation ();
|
bool updateNavigation ();
|
||||||
bool isEnemyThreat ();
|
bool isEnemyThreat ();
|
||||||
bool isWeaponRestricted (int wid);
|
bool isWeaponRestricted (int wid);
|
||||||
|
|
|
||||||
|
|
@ -1547,8 +1547,8 @@ void Bot::attackMovement () {
|
||||||
m_strafeSetTime = strafeUpdateTime ();
|
m_strafeSetTime = strafeUpdateTime ();
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool wallOnRight = checkWallOnRight ();
|
const bool wallOnRight = checkWallOnRight (72.0f);
|
||||||
const bool wallOnLeft = checkWallOnLeft ();
|
const bool wallOnLeft = checkWallOnLeft (72.0f);
|
||||||
|
|
||||||
if (m_dodgeStrafeDir == Dodge::Left) {
|
if (m_dodgeStrafeDir == Dodge::Left) {
|
||||||
if (!wallOnLeft) {
|
if (!wallOnLeft) {
|
||||||
|
|
@ -1584,7 +1584,10 @@ void Bot::attackMovement () {
|
||||||
// do not move if inside "corridor"
|
// do not move if inside "corridor"
|
||||||
if (wallOnRight && wallOnLeft) {
|
if (wallOnRight && wallOnLeft) {
|
||||||
m_strafeSpeed = 0.0f;
|
m_strafeSpeed = 0.0f;
|
||||||
|
m_moveSpeed = 0.0f;
|
||||||
|
|
||||||
m_strafeSetTime = game.time () + 3.0f;
|
m_strafeSetTime = game.time () + 3.0f;
|
||||||
|
m_dodgeStrafeDir = Dodge::None;
|
||||||
}
|
}
|
||||||
|
|
||||||
// we're setting strafe speed regardless of move angles, so not resetting forward move here cause bots to behave strange
|
// we're setting strafe speed regardless of move angles, so not resetting forward move here cause bots to behave strange
|
||||||
|
|
|
||||||
|
|
@ -3091,9 +3091,9 @@ bool Bot::isBlockedRight () {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Bot::checkWallOnLeft () {
|
bool Bot::checkWallOnLeft (float distance) {
|
||||||
TraceResult tr {};
|
TraceResult tr {};
|
||||||
game.testLine (pev->origin, pev->origin - pev->angles.right () * 40.0f, TraceIgnore::Monsters, ent (), &tr);
|
game.testLine (pev->origin, pev->origin - pev->angles.right () * distance, TraceIgnore::Monsters, ent (), &tr);
|
||||||
|
|
||||||
// check if the trace hit something...
|
// check if the trace hit something...
|
||||||
if (tr.flFraction < 1.0f) {
|
if (tr.flFraction < 1.0f) {
|
||||||
|
|
@ -3102,11 +3102,11 @@ bool Bot::checkWallOnLeft () {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Bot::checkWallOnRight () {
|
bool Bot::checkWallOnRight (float distance) {
|
||||||
TraceResult tr {};
|
TraceResult tr {};
|
||||||
|
|
||||||
// do a trace to the right...
|
// do a trace to the right...
|
||||||
game.testLine (pev->origin, pev->origin + pev->angles.right () * 40.0f, TraceIgnore::Monsters, ent (), &tr);
|
game.testLine (pev->origin, pev->origin + pev->angles.right () * distance, TraceIgnore::Monsters, ent (), &tr);
|
||||||
|
|
||||||
// check if the trace hit something...
|
// check if the trace hit something...
|
||||||
if (tr.flFraction < 1.0f) {
|
if (tr.flFraction < 1.0f) {
|
||||||
|
|
@ -3115,11 +3115,11 @@ bool Bot::checkWallOnRight () {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Bot::checkWallOnBehind () {
|
bool Bot::checkWallOnBehind (float distance) {
|
||||||
TraceResult tr {};
|
TraceResult tr {};
|
||||||
|
|
||||||
// do a trace to the right...
|
// do a trace to the right...
|
||||||
game.testLine (pev->origin, pev->origin - pev->angles.forward () * 40.0f, TraceIgnore::Monsters, ent (), &tr);
|
game.testLine (pev->origin, pev->origin - pev->angles.forward () * distance, TraceIgnore::Monsters, ent (), &tr);
|
||||||
|
|
||||||
// check if the trace hit something...
|
// check if the trace hit something...
|
||||||
if (tr.flFraction < 1.0f) {
|
if (tr.flFraction < 1.0f) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue