Items outside the sub cannot be deattached. Closes #562
This commit is contained in:
@@ -242,6 +242,14 @@ namespace Barotrauma.Items.Components
|
|||||||
IsActive = false;
|
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)
|
public override bool Pick(Character picker)
|
||||||
{
|
{
|
||||||
if (!attachable)
|
if (!attachable)
|
||||||
@@ -249,6 +257,8 @@ namespace Barotrauma.Items.Components
|
|||||||
return base.Pick(picker);
|
return base.Pick(picker);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!CanBeDeattached()) return false;
|
||||||
|
|
||||||
if (Attached)
|
if (Attached)
|
||||||
{
|
{
|
||||||
return base.Pick(picker);
|
return base.Pick(picker);
|
||||||
|
|||||||
@@ -224,6 +224,9 @@ namespace Barotrauma
|
|||||||
|
|
||||||
if (GameMain.Server != null)
|
if (GameMain.Server != null)
|
||||||
{
|
{
|
||||||
|
var holdable = item.GetComponent<Holdable>();
|
||||||
|
if (holdable != null && !holdable.CanBeDeattached()) continue;
|
||||||
|
|
||||||
if (!item.CanClientAccess(c)) continue;
|
if (!item.CanClientAccess(c)) continue;
|
||||||
}
|
}
|
||||||
TryPutItem(item, i, true, true, c.Character, false);
|
TryPutItem(item, i, true, true, c.Character, false);
|
||||||
|
|||||||
@@ -1236,6 +1236,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(ic.Msg)) continue;
|
if (string.IsNullOrEmpty(ic.Msg)) continue;
|
||||||
if (!ic.CanBePicked && !ic.CanBeSelected) continue;
|
if (!ic.CanBePicked && !ic.CanBeSelected) continue;
|
||||||
|
if (ic is Holdable holdable && !holdable.CanBeDeattached()) continue;
|
||||||
|
|
||||||
Color color = Color.Red;
|
Color color = Color.Red;
|
||||||
if (ic.HasRequiredSkills(character) && ic.HasRequiredItems(character, false)) color = Color.Orange;
|
if (ic.HasRequiredSkills(character) && ic.HasRequiredItems(character, false)) color = Color.Orange;
|
||||||
|
|||||||
Reference in New Issue
Block a user