diff --git a/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs b/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs
index 16a7277ad..0006eb558 100644
--- a/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs
+++ b/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs
@@ -436,7 +436,7 @@ namespace Barotrauma
InfoFrame.FindChild("showlog").Visible = GameMain.Server != null;
- campaignViewButton = new GUIButton(new Rectangle(0, 0, 130, 30), "Campaign view", Alignment.BottomRight, "", defaultModeContainer);
+ campaignViewButton = new GUIButton(new Rectangle(-80, 0, 120, 30), "Campaign view", Alignment.BottomRight, "", defaultModeContainer);
campaignViewButton.OnClicked = (btn, obj) => { ToggleCampaignView(true); return true; };
campaignViewButton.Visible = false;
diff --git a/Barotrauma/BarotraumaShared/BarotraumaShared.projitems b/Barotrauma/BarotraumaShared/BarotraumaShared.projitems
index a8b61c502..e57545b78 100644
--- a/Barotrauma/BarotraumaShared/BarotraumaShared.projitems
+++ b/Barotrauma/BarotraumaShared/BarotraumaShared.projitems
@@ -743,7 +743,7 @@
PreserveNewest
- PreserveNewest
+ Always
PreserveNewest
diff --git a/Barotrauma/BarotraumaShared/Data/clientpermissions.xml b/Barotrauma/BarotraumaShared/Data/clientpermissions.xml
index e8edf48f8..ccc105b28 100644
--- a/Barotrauma/BarotraumaShared/Data/clientpermissions.xml
+++ b/Barotrauma/BarotraumaShared/Data/clientpermissions.xml
@@ -1,4 +1,3 @@
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
index 0783bbdb6..0e7fff190 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
@@ -197,7 +197,7 @@ namespace Barotrauma
{
get { return !IsUnconscious && Stun <= 0.0f && !isDead; }
}
-
+
public bool CanInteract
{
get { return AllowInput && IsHumanoid && !LockHands; }
@@ -303,11 +303,11 @@ namespace Barotrauma
get { return needsAir; }
set { needsAir = value; }
}
-
+
public float Oxygen
{
get { return oxygen; }
- set
+ set
{
if (!MathUtils.IsValid(value)) return;
oxygen = MathHelper.Clamp(value, -100.0f, 100.0f);
@@ -331,7 +331,7 @@ namespace Barotrauma
{
if (GameMain.Client != null) return;
- SetStun(value);
+ SetStun(value);
}
}
@@ -358,7 +358,7 @@ namespace Barotrauma
}
}
}
-
+
public float MaxHealth
{
get { return maxHealth; }
@@ -367,33 +367,33 @@ namespace Barotrauma
public float Bleeding
{
get { return bleeding; }
- set
+ set
{
if (!MathUtils.IsValid(value)) return;
if (GameMain.Client != null) return;
if (!DoesBleed) return;
- float newBleeding = MathHelper.Clamp(value, 0.0f, 5.0f);
+ float newBleeding = MathHelper.Clamp(value, 0.0f, 5.0f);
if (newBleeding == bleeding) return;
bleeding = newBleeding;
-
+
if (GameMain.Server != null)
GameMain.Server.CreateEntityEvent(this, new object[] { NetEntityEvent.Type.Status });
}
}
-
+
public HuskInfection huskInfection;
public float HuskInfectionState
{
- get
- {
- return huskInfection == null ? 0.0f : huskInfection.IncubationTimer;
+ get
+ {
+ return huskInfection == null ? 0.0f : huskInfection.IncubationTimer;
}
set
{
if (ConfigPath != humanConfigFile) return;
-
+
if (value <= 0.0f)
{
if (huskInfection != null)
@@ -449,7 +449,7 @@ namespace Barotrauma
get;
set;
}
-
+
public Item[] SelectedItems
{
get { return selectedItems; }
@@ -466,6 +466,12 @@ namespace Barotrauma
get { return focusedItem; }
}
+ public Item PickingItem
+ {
+ get;
+ set;
+ }
+
public virtual AIController AIController
{
get { return null; }
diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/Pickable.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/Pickable.cs
index 69e06f783..482aee51f 100644
--- a/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/Pickable.cs
+++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/Pickable.cs
@@ -13,7 +13,6 @@ namespace Barotrauma.Items.Components
private float pickTimer;
-
public List AllowedSlots
{
get { return allowedSlots; }
@@ -55,13 +54,15 @@ namespace Barotrauma.Items.Components
public override bool Pick(Character picker)
{
//return if someone is already trying to pick the item
- if (pickTimer>0.0f) return false;
+ if (pickTimer > 0.0f) return false;
if (picker == null || picker.Inventory == null) return false;
- if (PickingTime>0.0f)
+ if (PickingTime > 0.0f)
{
- CoroutineManager.StartCoroutine(WaitForPick(picker, PickingTime));
-
+ if (picker.PickingItem == null)
+ {
+ CoroutineManager.StartCoroutine(WaitForPick(picker, PickingTime));
+ }
return false;
}
else
@@ -104,6 +105,8 @@ namespace Barotrauma.Items.Components
private IEnumerable