class ActionTogglePlaceObject : ActionSingleUseBase { void ActionTogglePlaceObject() { m_Text = "#toggle_placing"; } override void CreateConditionComponents() { m_ConditionItem = new CCINonRuined(); m_ConditionTarget = new CCTNone(); } override bool HasTarget() { return false; } override bool IsLocal() { return true; } override bool IsInstant() { return true; } override bool IsDeploymentAction() { return true; } override bool RemoveForceTargetAfterUse() { return false; } override bool CanBeUsedWithBrokenLegs() { return false; } override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item) { // not placeable if liquid is present; exception for barrels, for now if (!item.IsKindOf("Barrel_ColorBase") && item.IsLiquidPresent()) return false; return true; } override void Start(ActionData action_data) { super.Start(action_data); action_data.m_Player.SetLocalProjectionPosition(action_data.m_Target.GetCursorHitPos()); action_data.m_Player.TogglePlacingLocal(); } }