#Holdable Objects	----------------------------------------------------------------------

subtype: Holdable
	parent: Object
	unplaceable
	
	description: {Object that can be picked up by the player}
	
	rotatable
end

#Plain Objects	----------------------------------------------------------------------

subtype: PlainHoldable
	parent: Holdable
	unplaceable
	presetShape: < height: 60 point: (-30,-30) rightdir: (1,0) shape: obox width: 60 >
end

subtype: PlainHeavyBox
	parent: PlainHoldable
	meta: {< shapeList: prop/plainHeavyBox impSounds: sound/prop/heavyImpact >}
	spriteName: object/prop/plain/heavyBox
	description: {A simple block that is heavy enough to depress pressure plates}
end

subtype: PlainLightBox
	parent: PlainHoldable
	meta: {< shapeList: prop/plainLightBox impSounds: sound/prop/lightImpact >}
	spriteName: object/prop/plain/lightBox
	description: {A simple block that is too light to depress pressure plates}
end

subtype: GrappleHeavyBox
	parent: PlainHoldable
	meta: {< shapeList: prop/plainHeavyBox impSounds: sound/prop/heavyImpact grappleType: pullPlayer >}
	spriteName: object/prop/plain/grappleHeavyBox
	description: {A heavy block that pulls the player when grabbed with the Grapple Gun}
end

subtype: GrappleLightBox
	parent: PlainHoldable
	meta: {< shapeList: prop/plainLightGrappleBox impSounds: sound/prop/lightImpact grappleType: grab >}
	spriteName: object/prop/plain/grappleLightBox
	description: {A light block that is pulled to the player when grabbed with the Grapple Gun}
end

subtype: GlassBlock
	parent: PlainHoldable
	meta: {< shapeList: prop/glassBlock impSounds: sound/prop/heavyImpact >}
	spriteName: object/prop/plain/glassBlock
	description: {A heavy block that does not block lasers}
end

subtype: EnergyBlock
	parent: PlainHoldable
	meta: {< shapeList: prop/energyBlock impSounds: sound/prop/lightImpact >}
	spriteName: object/prop/plain/energyBlock
	description: {A light block that does not block projectiles}
end

#Polarity Plain Objects	----------------------------------------------------------------------

subtype: PolarityPlainHoldable
	parent: PlainHoldable
	unplaceable
	description: {Holdable Object that can be pushed/pulled with the Polarity Beam}
end

subtype: PolarityBoxBlue
	parent: PolarityPlainHoldable
	meta: {< shapeList: prop/plainPolarityBoxBlue impSounds: sound/prop/heavyImpact >}
	spriteName: object/prop/plain/polarity/blue
end

subtype: PolarityBoxRed
	parent: PolarityPlainHoldable
	meta: {< shapeList: prop/plainPolarityBoxRed impSounds: sound/prop/heavyImpact >}
	spriteName: object/prop/plain/polarity/red
end

subtype: PolarityBoxBlueHollow
	parent: PolarityPlainHoldable
	meta: {< shapeList: prop/plainPolarityBoxBlue impSounds: sound/prop/heavyImpact >}
	spriteName: object/prop/plain/polarity/blueHollow
end

subtype: PolarityBoxRedHollow
	parent: PolarityPlainHoldable
	meta: {< shapeList: prop/plainPolarityBoxRed impSounds: sound/prop/heavyImpact >}
	spriteName: object/prop/plain/polarity/redHollow
end

subtype: PolarityGrappleBoxBlue
	parent: PolarityPlainHoldable
	meta: {< shapeList: prop/plainPolarityBoxBlue impSounds: sound/prop/heavyImpact grappleType: pullPlayer >}
	spriteName: object/prop/plain/polarity/grappleBlue
end

subtype: PolarityGrappleBoxRed
	parent: PolarityPlainHoldable
	meta: {< shapeList: prop/plainPolarityBoxRed impSounds: sound/prop/heavyImpact grappleType: pullPlayer >}
	spriteName: object/prop/plain/polarity/grappleRed
end

#Switch Objects	----------------------------------------------------------------------

subtype: SwitchHoldable
	parent: Holdable
	unplaceable
	
	property: SwitchType < type: enum typedata: {Toggle Permanent Button} > Toggle
	property: OnAtStart < type: bool > 0
	property: receiver < type: list typedata: {< type: map_obj_link >} > 0
	presetShape: < height: 60 point: (-30,-30) rightdir: (1,0) shape: obox width: 60 >
	
	description: {A Holdable Object that acts as a switch}
end

subtype: ImpactSwitchHoldable

	parent: SwitchHoldable
	meta: {< shapeList: prop/plainHeavyBox impSounds: sound/prop/heavyImpact >}
	spriteName: object/prop/impactSwitch/baseOff
	
	description: {A heavy block that acts as an Impact Switch}
end

subtype: ImpactSwitchHoldableHollow

	parent: ImpactSwitchHoldable
	meta: {< shapeList: prop/plainHeavyBox impSounds: sound/prop/heavyImpact >}
	spriteName: object/prop/impactSwitch/baseHollowOff
	
	description: {A heavy hollow block that acts as an Impact Switch}
end

subtype: ZapSwitchHoldable

	parent: SwitchHoldable
	meta: {< shapeList: prop/plainHeavyBox impSounds: sound/prop/heavyImpact >}
	spriteName: object/prop/zapSwitch/baseOff
	
	description: {A heavy block that acts as an Zap Switch}
end

subtype: ZapSwitchHoldableHollow

	parent: ZapSwitchHoldable
	meta: {< shapeList: prop/plainHeavyBox impSounds: sound/prop/heavyImpact >}
	spriteName: object/prop/zapSwitch/baseHollowOff
	
	description: {A heavy hollow block that acts as an Zap Switch}
end

#Utility	----------------------------------------------------------------------

subtype: UtilityHoldable
	parent: Holdable
	unplaceable
end

subtype: FuseBomb

	parent: UtilityHoldable
	
	spriteName: object/prop/utility/fuseBomb
	presetShape: < height: 48 point: (-24,-24) rightdir: (1,0) shape: {obox} width: 48 >
	
	description: {A heavy bomb that explodes 5 seconds after being ignited}
end

subtype: ImpactBomb

	parent: UtilityHoldable
	
	spriteName: object/prop/utility/impactBomb
	presetShape: < height: 48 point: (-24,-24) rightdir: (1,0) shape: {obox} width: 48 >
	
	description: {A heavy bomb that explodes 5 seconds after being struck with an impact weapon}
end

subtype: Lantern
	parent: UtilityHoldable
	
	meta: {< shapeList: prop/lantern impSounds: sound/prop/hollowMetalImpact >}
	
	spriteName: object/prop/utility/lantern
	presetShape: < point: (-14,20) point: (-8,28) point: (8,28) point: (14,20) point: (18,-20) point: (6,-26) point: (-6,-26) point: (-18,-20) shape: {polygon} >
	description: {A very light object that can be lit on fire}
	
	property: InitiallyLit < type: bool > 0
	
end