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
@@ -303,7 +303,7 @@ namespace Barotrauma
private float stunTimer; private float stunTimer;
public float Stun public float Stun
{ {
get { return stunTimer; } get { return IsRagdolled ? 1.0f : stunTimer; }
set set
{ {
if (GameMain.Client != null) return; if (GameMain.Client != null) return;
@@ -686,7 +686,7 @@ namespace Barotrauma
case InputType.Use: case InputType.Use:
return !(dequeuedInput.HasFlag(InputNetFlags.Use)) && (prevDequeuedInput.HasFlag(InputNetFlags.Use)); return !(dequeuedInput.HasFlag(InputNetFlags.Use)) && (prevDequeuedInput.HasFlag(InputNetFlags.Use));
case InputType.Ragdoll: case InputType.Ragdoll:
return !(dequeuedInput.HasFlag(InputType.Ragdoll)) && (prevDequeuedInput.HasFlag(InputType.Ragdoll)); return !(dequeuedInput.HasFlag(InputNetFlags.Ragdoll)) && (prevDequeuedInput.HasFlag(InputNetFlags.Ragdoll));
default: default:
return false; return false;
} }
@@ -722,6 +722,7 @@ namespace Barotrauma
case InputType.Attack: case InputType.Attack:
return dequeuedInput.HasFlag(InputNetFlags.Attack); return dequeuedInput.HasFlag(InputNetFlags.Attack);
case InputType.Ragdoll: case InputType.Ragdoll:
if (dequeuedInput.HasFlag(InputNetFlags.Ragdoll)) DebugConsole.NewMessage("RAGDOLL", Color.Lime);
return dequeuedInput.HasFlag(InputNetFlags.Ragdoll); return dequeuedInput.HasFlag(InputNetFlags.Ragdoll);
} }
return false; return false;
@@ -1448,7 +1449,7 @@ namespace Barotrauma
UpdateControlled(deltaTime, cam); UpdateControlled(deltaTime, cam);
if (Stun > 0.0f) if (stunTimer > 0.0f)
{ {
stunTimer -= deltaTime; stunTimer -= deltaTime;
if (stunTimer < 0.0f && GameMain.Server != null) if (stunTimer < 0.0f && GameMain.Server != null)
@@ -1472,7 +1473,6 @@ namespace Barotrauma
if (IsRagdolled) if (IsRagdolled)
{ {
((HumanoidAnimController)AnimController).Crouching = false; ((HumanoidAnimController)AnimController).Crouching = false;
Stun = Math.Max(0.1f, Stun);
AnimController.ResetPullJoints(); AnimController.ResetPullJoints();
selectedConstruction = null; selectedConstruction = null;
@@ -128,6 +128,12 @@ namespace Barotrauma
if (!AllowInput) if (!AllowInput)
{ {
AnimController.Frozen = false; 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) else if (memInput.Count == 0)
{ {
@@ -289,20 +295,20 @@ namespace Barotrauma
newInteract = msg.ReadUInt16(); 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;
NetInputMem newMem = new NetInputMem(); newMem.intAim = newAim;
newMem.states = newInput; newMem.interact = newInteract;
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)) if (NetIdUtils.IdMoreRecent(networkUpdateID, LastNetworkUpdateID))