Fixed ragdolling in multiplayer

This commit is contained in:
juanjp600
2017-12-06 14:48:47 -03:00
parent d34c783c30
commit 0d8d0d62ec
2 changed files with 20 additions and 14 deletions

View File

@@ -303,7 +303,7 @@ namespace Barotrauma
private float stunTimer;
public float Stun
{
get { return stunTimer; }
get { return IsRagdolled ? 1.0f : stunTimer; }
set
{
if (GameMain.Client != null) return;
@@ -686,7 +686,7 @@ namespace Barotrauma
case InputType.Use:
return !(dequeuedInput.HasFlag(InputNetFlags.Use)) && (prevDequeuedInput.HasFlag(InputNetFlags.Use));
case InputType.Ragdoll:
return !(dequeuedInput.HasFlag(InputType.Ragdoll)) && (prevDequeuedInput.HasFlag(InputType.Ragdoll));
return !(dequeuedInput.HasFlag(InputNetFlags.Ragdoll)) && (prevDequeuedInput.HasFlag(InputNetFlags.Ragdoll));
default:
return false;
}
@@ -722,6 +722,7 @@ namespace Barotrauma
case InputType.Attack:
return dequeuedInput.HasFlag(InputNetFlags.Attack);
case InputType.Ragdoll:
if (dequeuedInput.HasFlag(InputNetFlags.Ragdoll)) DebugConsole.NewMessage("RAGDOLL", Color.Lime);
return dequeuedInput.HasFlag(InputNetFlags.Ragdoll);
}
return false;
@@ -1448,7 +1449,7 @@ namespace Barotrauma
UpdateControlled(deltaTime, cam);
if (Stun > 0.0f)
if (stunTimer > 0.0f)
{
stunTimer -= deltaTime;
if (stunTimer < 0.0f && GameMain.Server != null)
@@ -1472,7 +1473,6 @@ namespace Barotrauma
if (IsRagdolled)
{
((HumanoidAnimController)AnimController).Crouching = false;
Stun = Math.Max(0.1f, Stun);
AnimController.ResetPullJoints();
selectedConstruction = null;

View File

@@ -128,6 +128,12 @@ namespace Barotrauma
if (!AllowInput)
{
AnimController.Frozen = false;
if (memInput.Count > 0)
{
prevDequeuedInput = dequeuedInput;
dequeuedInput = memInput[memInput.Count - 1].states;
memInput.RemoveAt(memInput.Count - 1);
}
}
else if (memInput.Count == 0)
{
@@ -289,20 +295,20 @@ namespace Barotrauma
newInteract = msg.ReadUInt16();
}
if (AllowInput)
//if (AllowInput)
//{
if (NetIdUtils.IdMoreRecent((ushort)(networkUpdateID - i), LastNetworkUpdateID) && (i < 60))
{
if (NetIdUtils.IdMoreRecent((ushort)(networkUpdateID - i), LastNetworkUpdateID) && (i < 60))
{
NetInputMem newMem = new NetInputMem();
newMem.states = newInput;
newMem.intAim = newAim;
newMem.interact = newInteract;
NetInputMem newMem = new NetInputMem();
newMem.states = newInput;
newMem.intAim = newAim;
newMem.interact = newInteract;
newMem.networkUpdateID = (ushort)(networkUpdateID - i);
newMem.networkUpdateID = (ushort)(networkUpdateID - i);
memInput.Insert(i, newMem);
}
memInput.Insert(i, newMem);
}
//}
}
if (NetIdUtils.IdMoreRecent(networkUpdateID, LastNetworkUpdateID))