<?xml version="1.0"?>
<ItemRenderer>
	<Data>
		<Sprite name="s_goggles" fileName="game/player_cosmetics3.rttex" textureSize="32" frame="23,29" />
		<Sprite name="s_gun" fileName="game/pets/p_mechasaurus_rex.rttex" textureSize="32" frame="2,1" />
		<Sprite name="s_muzzleFlash" fileName="game/particles12.rttex" textureSize="32" frame="29,2" />
		<Sprite name="s_pet" fileName="game/pets/p_mechasaurus_rex.rttex" textureSize="32" frame="0,0" />
		<Sprite name="s_punch" fileName="game/particles12.rttex" textureSize="32" frame="28,2" />
		<Sprite name="s_target" fileName="game/particles12.rttex" textureSize="32" frame="27,2" />
		<VariableMap>
			<Set name="target.angle">0</Set>
			<Set name="target.origin.offset">-16,-12,0</Set>
			<Set name="t0">-12,-12,0</Set>
			<Set name="t1">-4,0,0</Set>
		</VariableMap>
		<Animations>
			<SpriteAnimation name="a_gun" sprite="s_gun" animTime="300" isLoop="true" playOnState="Pet.Punch">
				<Frame>2,1</Frame>
				<Frame>3,1</Frame>
				<Frame>4,1</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_petFall" sprite="s_pet" animTime="100" playOnState="Pet.Down">
				<Frame>7,0</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_petIdle" sprite="s_pet" animTime="300" isLoop="true" playOnState="Pet.None">
				<Frame>0,0</Frame>
				<Frame>1,0</Frame>
				<Frame>2,0</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_petJump" sprite="s_pet" animTime="100" playOnState="Pet.Up">
				<Frame>6,0</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_petMove" sprite="s_pet" animTime="300" isLoop="true" playOnState="Pet.Horizontal">
				<Frame>3,0</Frame>
				<Frame>4,0</Frame>
				<Frame>5,0</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_petPunch" sprite="s_pet" animTime="100" playOnState="Pet.Punch">
				<Frame>1,1</Frame>
			</SpriteAnimation>
		</Animations>
		<StateMachines>
			<StateMachine name="Pet">
				<States>
					<State name="None" />
					<State name="Up" />
					<State name="Down" />
					<State name="Horizontal" />
					<State name="Punch" />
				</States>
				<Transitions>
					<Transition to="None" from="Punch|Up|Down|Horizontal">
						<Condition type="and">
							<IsVariableFloat name="pet.velocity.length" operator="Less" abs="true">0.1</IsVariableFloat>
							<IsAction operatorType="NotEqual">PUNCH</IsAction>
						</Condition>
					</Transition>
					<Transition to="Up" from="Punch|None|Down|Horizontal">
						<Condition type="and">
							<IsVariableFloat name="pet.velocity.y" operator="Less">-0.1</IsVariableFloat>
							<IsAction operatorType="NotEqual">PUNCH</IsAction>
						</Condition>
					</Transition>
					<Transition to="Down" from="Punch|None|Up|Horizontal">
						<Condition type="and">
							<IsVariableFloat name="pet.velocity.y" operator="Greater">0.1</IsVariableFloat>
							<IsAction operatorType="NotEqual">PUNCH</IsAction>
						</Condition>
					</Transition>
					<Transition to="Horizontal" from="Punch|None|Down|Up">
						<Condition type="and">
							<IsVariableFloat name="pet.velocity.x" operator="Greater" abs="true">0.1</IsVariableFloat>
							<IsVariableFloat name="pet.velocity.y" operator="Less" abs="true">0.1</IsVariableFloat>
							<IsAction operatorType="NotEqual">PUNCH</IsAction>
						</Condition>
					</Transition>
					<Transition to="Punch" from="None|Up|Down|Horizontal">
						<Condition>
							<IsAction>PUNCH</IsAction>
						</Condition>
					</Transition>
				</Transitions>
			</StateMachine>
			<StateMachine name="Facing">
				<States>
					<State name="Left" />
					<State name="Right" />
				</States>
				<Transitions>
					<Transition to="Left" from="Right">
						<Condition>
							<IsVariableBool name="pet.facingLeft">true</IsVariableBool>
						</Condition>
					</Transition>
					<Transition to="Right" from="Left">
						<Condition>
							<IsVariableBool name="pet.facingLeft">false</IsVariableBool>
						</Condition>
					</Transition>
				</Transitions>
			</StateMachine>
		</StateMachines>
		<ParticleSystems>
			<ParticleSystem name="ps_muzzleFlash" updateState="Pet.Punch" renderStage="RenderPet">
				<Emitter attachment="contextRotation">
					<Set name="lifeTime">0.15</Set>
					<Set name="emissionInterval">0.05</Set>
					<Set name="infParticles">true</Set>
					<Set name="checkParticleNumToEmit">true</Set>
					<Set name="particlesPerEmission">1</Set>
					<Set name="particlesToEmit">1</Set>
				</Emitter>
				<Particle>
					<Set name="sprite">s_muzzleFlash</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Curve name="initialAlpha">
						<KeyFrame>0, 1</KeyFrame>
						<KeyFrame>0.75, 0.7</KeyFrame>
						<KeyFrame>1, 0</KeyFrame>
					</Curve>
					<Set name="inSpecificOrder">true</Set>
					<Set name="lifeTime">0.1</Set>
					<Set name="renderAlignment">LEFT_CENTER</Set>
				</Particle>
			</ParticleSystem>
			<ParticleSystem name="ps_punch" updateState="Pet.Punch" renderStage="RenderPet">
				<Emitter attachment="contextRotation">
					<Random name="offset" min="-4, -4" max="4, 4" />
					<Set name="lifeTime">0.1</Set>
					<Random name="emissionInterval" min="0.05" max="0.1" />
					<Set name="infParticles">true</Set>
					<Set name="checkParticleNumToEmit">true</Set>
					<Set name="particlesPerEmission">1</Set>
					<Set name="particlesToEmit">1</Set>
				</Emitter>
				<Particle>
					<Set name="sprite">s_punch</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Set name="rotateWithVelocity">true</Set>
					<Random name="targetPosOffset" min="-8, -8" max="8, 8" />
					<Set name="inSpecificOrder">true</Set>
					<Set name="lifeTime">0.2</Set>
					<VectorTo name="initialVelocity" source="targetPos" offset="targetPosOffset" duration="lifeTime" x="1" angle="0" />
					<OnFinish>
						<ParticleSystemName>ps_target</ParticleSystemName>
					</OnFinish>
				</Particle>
			</ParticleSystem>
			<ParticleSystem name="ps_target">
				<Emitter>
					<Set name="infParticles">true</Set>
					<Set name="checkParticleNumToEmit">true</Set>
					<Set name="particlesPerEmission">1</Set>
					<Set name="particlesToEmit">1</Set>
				</Emitter>
				<Particle>
					<Set name="sprite">s_target</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Curve name="initialAlpha">
						<KeyFrame>0, 1</KeyFrame>
						<KeyFrame>0.75, 1</KeyFrame>
						<KeyFrame>1, 0</KeyFrame>
					</Curve>
					<Curve name="initialScale">
						<KeyFrame>0, 1, 1</KeyFrame>
						<KeyFrame>1, 0, 0</KeyFrame>
					</Curve>
					<Set name="lifeTime">0.1</Set>
					<Random name="initialAngle" min="0" max="360" />
					<Select name="initialRotationRate" input="randomNumber">
						<Item>-720</Item>
						<Item>720</Item>
					</Select>
				</Particle>
			</ParticleSystem>
		</ParticleSystems>
		<RenderOptions>
			<Default>
				<Set name="NeedRenderPet">true</Set>
				<Set name="PlayDefaultPunchAudio">true</Set>
				<Set name="DefaultPunchSound">audio/machinegun.wav</Set>
				<Set name="PetUpdatesFacing">true</Set>
			</Default>
		</RenderOptions>
	</Data>
	<RenderRules>
		<RenderHat>
			<Translate>0,-16,0</Translate>
			<SpriteRender name="s_goggles" alignment="DOWN_CENTER" />
		</RenderHat>
		<OnPunchUpdate>
			<AvatarTransform class="Face">
				<Set name="face">MAD</Set>
			</AvatarTransform>
		</OnPunchUpdate>
		<UpdatePet>
			<ContextUpdate type="SetPetWalkRunJump">
				<Set name="PetWalkRunJump.minSpeed">500</Set>
				<Set name="PetWalkRunJump.distSpeedMult">20</Set>
			</ContextUpdate>
		</UpdatePet>
		<RenderPet>
			<SpriteRender name="s_pet" alignment="DOWN_CENTER" />
			<Group onState="Pet.Punch">
				<Translate>-10,-13,0</Translate>
				<Translate onState="Facing.Left">4,2,0</Translate>
				<Rotate forceValue="true">target.angle</Rotate>
				
				<Group onState="Facing.Right">
					<SpriteRender name="s_gun" alignment="LEFT_CENTER" />
					<Translate>12,2,0</Translate>
					<ParticleSystemUpdate name="ps_muzzleFlash" />
					<ParticleSystemUpdate name="ps_punch" />
				</Group>
				<Group onState="Facing.Left">
					<SpriteRender name="s_gun" flip="1,0" alignment="LEFT_CENTER" />
					<Translate>-17,2,0</Translate>
					<ParticleSystemUpdate name="ps_muzzleFlash" />
					<ParticleSystemUpdate name="ps_punch" />
				</Group>
			</Group>
		</RenderPet>
	</RenderRules>
</ItemRenderer>
