/**************************************************************************

template_actor.tgi
Copyright © 2002-2004 TimeGate Studios

DESCRIPTION: a complex thing - a data object that can be instantiated in the world and
			can interact with the world.

REVISION HISTORY:
drp090602 - created

USAGE:

	[Thing Template=Actor]
	This node goes at the root level and defines an actor that can be instantiated in the game.
	It represents any thing that can interact with the world (or be interacted with), and includes
	projectiles, units, buildings, etc.  You should not actually use "Template=Actor" and should
	instead use a more specialized version.
	
	[Thing Template=Unit]
	[Thing Template=Projectile]

**************************************************************************/

[Template Actor Inherit=Object]
{
	category = ACTOR

	;; editor_name = optional (defaults to 'name')
	localized editor_name = ""
	
	;; recruitable = YES, NO, WITH_PRIMARY
	;; - note that the game enforces only Elements and Organizations are recruitable
	;; - WITH_PRIMARY only applies to an Organization and says it is only recruitable if the
	;;   layout data defines a primary slot.
	recruitable = NO
	
	;; transport_actor = actor_ids
	;; The actor used to transport this actor after this actor has been recruited
	transport_actor = null
	
	;; fall drag
	;; 0.0 means no drag, falls out of the sky (like crashing)
	;; larger values slow the fall for drag effects (like 5 for paratroopers)
	fixed fall_drag = 0.0

	;; (optional) name list used to assign actor name
	string	name_list_ids = NULL

	;; are actors numbered based on how many already exist for the kingdom
	bool	numbered = false
	
	;; places_tracks = true, false
	;; Whether the object should place tracks or not. For now, everything except catapults
	;; and similar units should be false.
	;; jkm050903 - Requires code support before they can be turned on.
	places_tracks = false

	;; if set, when actor selected, faction portrait is show in object display instead of
	;; actor portrait
	bool	show_faction_portrait = false

	;; if false, when actor is dying it becomes nonblocking so other actors can walk through it.
	bool	blocking_while_dying = true
	
	;; if true, hides the actor's icon in the recruitment panel if its property requirements are not met
	;; if false, the icon appears but is grayed out
	bool	hide_if_missing_properties = true
	
	;; the following value designates a weight to this actor when a starting location is calculated
	int starting_location_priority = 0

 	;; Actor stances
	[list Stance Template=Stance]

	;; Actor state events (note that the FXCs need to specify the actor state they're for)
	[list WhenEnter Template=FXC]
	[list WhenLeave Template=FXC]
	
	[Flags]
	{
		invulnerable = false
		ownable = true
		radar = true
	}
	
	[Placement]
	{
		placement_group_IDS = null
		weight = 0
	}
	
	[Size]
	height = 2

	[optional AircraftComponent template=AircraftComponent]

	[optional BodyComponent template=BodyComponent]

	[optional BuilderComponent template=BuilderComponent]

	[optional CharacterComponent template=CharacterComponent]

	[optional CityComponent template=CityComponent]
	
	[optional ConstructionComponent template=ConstructionComponent]

	[optional DefenderComponent template=DefenderComponent]
	
	[optional DenizenComponent template=DenizenComponent]

	[optional DetectionComponent template=DetectionComponent]

	[optional EconomyComponent template=EconomyComponent] 

	[optional ElementComponent template=ElementComponent]
	
	[optional ExperienceComponent template=ExperienceComponent]

	[optional HQComponent template=HQComponent]

	[optional LairComponent template=LairComponent]

	[optional MobileDeploymentComponent template=MobileDeploymentComponent]

	[optional MoverComponent template=MoverComponent]

	[optional OrganizationComponent template=OrganizationComponent]

	[optional PerformerComponent template=PerformerComponent]

	[optional ProjectileComponent template=ProjectileComponent]

	[optional PropertiesComponent template=PropertiesComponent]

	[optional RecruitComponent template=RecruitComponent]

	[optional ResearchComponent template=ResearchComponent]

	[optional SettlementComponent template=SettlementComponent]

	[optional StructureComponent template=StructureComponent]
	
	[optional SupplyComponent template=SupplyComponent]
	
	[optional TransportComponent template=TransportComponent]
	
	[optional WallComponent template=WallComponent]

	[optional FlareComponent template=FlareComponent]
	
	[optional MetaGameComponent template=MetaGameComponent]

	[optional PortalComponent template=PortalComponent]
	
	;; specify the random actor that this actor can appear in
	[list RandomActor]
	string random_actor_ids
	fixed weight = 1

} ; end [Template Actor]

[Template RandomActor inherit=Actor]
{
	category = RANDOM_ACTOR
	
	;; add this so we can apply properties to random actors in the RMC
	[PropertiesComponent]

	[flags]
	ethereal = false
}

[Template Trailer inherit=Actor]
{
	category = TRAILER
}
