Rag.c
class Rag extends ItemBase
{
override bool CanSwapEntities(EntityAI otherItem, InventoryLocation otherDestination, InventoryLocation destination)
{
if (!super.CanSwapEntities(otherItem, otherDestination, destination))
{
return false;
}
if (Torch.Cast(GetHierarchyParent()) && otherItem.IsInherited(Rag))
{
return false;
}
return true;
}
override bool CanPutAsAttachment(EntityAI parent)
{
if (!super.CanPutAsAttachment(parent))
{
return false;
}
if (GetQuantity() > 1 && PlayerBase.Cast(parent))
{
return false;
}
return true;
}
override bool CanBeSplit()
{
Torch torchParent = Torch.Cast(GetHierarchyParent());
if (torchParent && torchParent.GetCompEM() && torchParent.GetCompEM().IsWorking())
return false;
return super.CanBeSplit();
}
//================================================================
// IGNITION ACTION
//================================================================
override bool HasFlammableMaterial()
{
return true;
}
override bool CanBeIgnitedBy(EntityAI igniter = null)
{
return GetHierarchyParent() == null;
}
override bool CanIgniteItem(EntityAI ignite_target = null)
{
return false;
}
override bool CanBeCombined(EntityAI other_item, bool reservation_check = true, bool stack_max_limit = false)
{
if (!super.CanBeCombined(other_item, reservation_check, stack_max_limit))
{
return false;
}
return Torch.Cast(other_item.GetHierarchyParent()) == null;//when the other rag is attached to the torch, disallow this action
}
override void OnIgnitedThis(EntityAI fire_source)
{
Fireplace.IgniteEntityAsFireplace(this, fire_source);
}
override bool IsThisIgnitionSuccessful(EntityAI item_source = null)
{
return Fireplace.CanIgniteEntityAsFireplace(this);
}
override bool CanAssignToQuickbar()
{
return (!GetInventory().IsAttachment());
}
override bool CanBeDisinfected()
{
return true;
}
override void SetActions()
{
super.SetActions();
AddAction(ActionBandageTarget);
AddAction(ActionBandageSelf);
AddAction(ActionGagTarget);
AddAction(ActionGagSelf);
AddAction(ActionCreateIndoorFireplace);
AddAction(ActionCreateIndoorOven);
AddAction(ActionAttach);
AddAction(ActionDetach);
AddAction(ActionRefuelTorch);
AddAction(ActionCraftImprovisedHandsCover);
AddAction(ActionCraftImprovisedHeadCover);
AddAction(ActionCraftImprovisedFeetCover);
AddAction(ActionCraftImprovisedFaceCover);
AddAction(ActionCraftImprovisedTorsoCover);
AddAction(ActionCraftImprovisedLegsCover);
AddAction(ActionCraftImprovisedEyePatch);
AddAction(ActionCraftArmband);
}
override float GetBandagingEffectivity()
{
return 0.5;
}
override float GetInfectionChance(int system = 0, Param param = null)
{
if (m_Cleanness == 1)
return 0;
return 0.15;
}
override void OnCombine(ItemBase other_item)
{
super.OnCombine(other_item);
if (m_Cleanness == 1 && other_item.m_Cleanness == 0)
SetCleanness(0);
}
}