diff --git a/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs b/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs index be09c3888..cc21a1ad1 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs @@ -631,8 +631,7 @@ namespace Barotrauma else { // If the secondary cooldown is defined and expired, check if we can switch the attack - var previousLimb = AttackingLimb; - var newLimb = GetAttackLimb(attackWorldPos, previousLimb); + var newLimb = GetAttackLimb(attackWorldPos, AttackingLimb); if (newLimb != null) { // Attack with the new limb @@ -680,8 +679,7 @@ namespace Barotrauma else { // If the secondary cooldown is defined and expired, check if we can switch the attack - var previousLimb = AttackingLimb; - var newLimb = GetAttackLimb(attackWorldPos, previousLimb); + var newLimb = GetAttackLimb(attackWorldPos, AttackingLimb); if (newLimb != null) { // Attack with the new limb @@ -725,6 +723,11 @@ namespace Barotrauma // Check that we can reach the target distance = Vector2.Distance(AttackingLimb.WorldPosition, attackWorldPos); canAttack = distance < AttackingLimb.attack.Range; + if (!canAttack && !IsCoolDownRunning) + { + // If not, reset the attacking limb, if the cooldown is not running + AttackingLimb = null; + } } // If the attacking limb is a hand or claw, for example, using it as the steering limb can end in the result where the character circles around the target. For example the Hammerhead steering with the claws when it should use the torso. diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Engine.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Engine.cs index 5df72ff59..010f24173 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Engine.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Engine.cs @@ -90,7 +90,7 @@ namespace Barotrauma.Items.Components Force = MathHelper.Lerp(force, (voltage < minVoltage) ? 0.0f : targetForce, 0.1f); if (Math.Abs(Force) > 1.0f) { - Vector2 currForce = new Vector2((force / 10.0f) * maxForce * Math.Min(voltage / minVoltage, 1.0f), 0.0f); + Vector2 currForce = new Vector2((force / 100.0f) * maxForce * Math.Min(voltage / minVoltage, 1.0f), 0.0f); //less effective when in a bad condition currForce *= MathHelper.Lerp(0.5f, 2.0f, item.Condition / item.MaxCondition);