Container_Base.c
class Container_Base : ItemBase
{
override bool IsContainer()
{
return true;
}
override bool CanPutInCargo(EntityAI parent)
{
if (!super.CanPutInCargo(parent))
return false;
if (parent && (parent == this || GetType() == parent.GetType() || !parent.GetInventory().AreChildrenAccessible()))
return false;
return true;
}
override bool CanReceiveItemIntoCargo( EntityAI item )
{
if (!super.CanReceiveItemIntoCargo(item))
return false;
//is 'this' somewhere in cargo?
if (!GetInventory().AreChildrenAccessible())
return false;
return true;
}
}
class DeployableContainer_Base : Container_Base
{
protected vector m_HalfExtents; // The Y value contains a heightoffset and not the halfextent !!!
void DeployableContainer_Base()
{
m_HalfExtents = vector.Zero;
ProcessInvulnerabilityCheck(GetInvulnerabilityTypeString());
}
override string GetInvulnerabilityTypeString()
{
return "disableContainerDamage";
}
override void SetActions()
{
super.SetActions();
AddAction(ActionTogglePlaceObject);
AddAction(ActionPlaceObject);
}
override bool CanReceiveAttachment(EntityAI attachment, int slotId)
{
if (GetHealthLevel() == GameConstants.STATE_RUINED)
return false;
return super.CanReceiveAttachment(attachment, slotId);
}
override bool CanLoadAttachment(EntityAI attachment)
{
if (GetHealthLevel() == GameConstants.STATE_RUINED)
return false;
return super.CanLoadAttachment(attachment);
}
override bool CanReceiveItemIntoCargo(EntityAI item)
{
if (GetHealthLevel() == GameConstants.STATE_RUINED)
return false;
return super.CanReceiveItemIntoCargo(item);
}
override bool CanLoadItemIntoCargo(EntityAI item)
{
if (!super.CanLoadItemIntoCargo(item))
return false;
if (GetHealthLevel() == GameConstants.STATE_RUINED)
return false;
return true;
}
override void EEHealthLevelChanged(int oldLevel, int newLevel, string zone)
{
super.EEHealthLevelChanged(oldLevel,newLevel,zone);
if (newLevel == GameConstants.STATE_RUINED && !GetHierarchyParent())
MiscGameplayFunctions.DropAllItemsInInventoryInBounds(this, m_HalfExtents);
}
}