Items outside the sub cannot be deattached. Closes #562

This commit is contained in:
Joonas Rikkonen
2018-08-20 20:42:57 +03:00
parent 898e8dfdb1
commit 012245fbaa
3 changed files with 14 additions and 0 deletions

View File

@@ -242,6 +242,14 @@ namespace Barotrauma.Items.Components
IsActive = false;
}
public bool CanBeDeattached()
{
if (!attachable || !attached) return true;
//don't allow deattaching if outside hulls and not in sub editor
return item.CurrentHull != null || Screen.Selected == GameMain.SubEditorScreen;
}
public override bool Pick(Character picker)
{
if (!attachable)
@@ -249,6 +257,8 @@ namespace Barotrauma.Items.Components
return base.Pick(picker);
}
if (!CanBeDeattached()) return false;
if (Attached)
{
return base.Pick(picker);

View File

@@ -224,6 +224,9 @@ namespace Barotrauma
if (GameMain.Server != null)
{
var holdable = item.GetComponent<Holdable>();
if (holdable != null && !holdable.CanBeDeattached()) continue;
if (!item.CanClientAccess(c)) continue;
}
TryPutItem(item, i, true, true, c.Character, false);

View File

@@ -1236,6 +1236,7 @@ namespace Barotrauma
{
if (string.IsNullOrEmpty(ic.Msg)) continue;
if (!ic.CanBePicked && !ic.CanBeSelected) continue;
if (ic is Holdable holdable && !holdable.CanBeDeattached()) continue;
Color color = Color.Red;
if (ic.HasRequiredSkills(character) && ic.HasRequiredItems(character, false)) color = Color.Orange;