<?xml version="1.0" encoding="utf-8"?>
<ItemRenderer>
	<Data>
		<Sprite name="s_Pearl" fileName="game/particles12.rttex" textureSize="32" frame="25,18"/>
		<Sprite name="s_PearlGlow" fileName="game/particles12.rttex" textureSize="32" frame="25,19"/>
		<Sprite name="s_GodRay" fileName="game/particles_large17.rttex" textureSize="64" frame="10,6"/>
		<Sprite name="s_Trail" fileName="game/particles9.rttex" textureSize="32" frame="28,23"/>
		<RenderOptions>
			<Default>
				<Set name="PunchSoundOverride">HAND</Set>
				<Set name="DefaultRenderMannequinHandItem">false</Set>
				<Set name="RenderFrontArmInfected">true</Set>
				<Set name="RenderFrontArmInTheFront">true</Set>
			</Default>
		</RenderOptions>
		<Animations>
			<SpriteAnimation name="a_GodRay" sprite="s_GodRay">
				<Frame>10, 6</Frame>
				<Frame>11, 6</Frame>
				<Frame>12, 6</Frame>
				<Frame>13, 6</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_Trail" sprite="s_Trail">
				<Frame>28, 23</Frame>
				<Frame>29, 23</Frame>
				<Frame>30, 23</Frame>
			</SpriteAnimation>
			<SpriteCurveAnimation name="a_pearlGlow" isLoop="true" autoPlay="true" sprite="s_PearlGlow" animTime="2000">
				<Curve name="alpha">
					<KeyFrame>0.f, 0.f</KeyFrame>
					<KeyFrame>0.35f, 1.f</KeyFrame>
					<KeyFrame>0.65f, 1.f</KeyFrame>
					<KeyFrame>1.f, 0.f</KeyFrame>
				</Curve>
			</SpriteCurveAnimation>
			<InterpolationVec2Animation name="a_punchStart" variableName="movingPos" targetVariableName="target.pos" animTime="1500" playOnState="PunchAnim.Start"/>
			<InterpolationVec2Animation name="a_punchContinue" variableName="movingPos" targetVariableName="target.pos" animTime="30" isLoop="true" playOnState="PunchAnim.Continue"/>
			<InterpolationVec2Animation name="a_punchEnd" variableName="movingPos" targetVariableName="initialPos" animTime="1000" playOnState="PunchAnim.End"/>
		</Animations>
		<ParticleSystems>
			<ParticleSystem name="ps_GodRay">
				<Emitter  attachment="handspotRoot">
					<Set name="offset">-1,9</Set>
					<Set name="lifeTime">0.2</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 randomSpriteFrame="true">
					<Set name="sprite">s_GodRay</Set>
					<Set name="blendingMode">ADDITIVE</Set>
					<Set name="relativeToEmitter">true</Set>
					<Curve name="initialAlpha">
						<KeyFrame>0, 1</KeyFrame>
						<KeyFrame>1, 0</KeyFrame>
					</Curve>
					<Curve name="initialScale">
						<KeyFrame>0, 0.5,0.5</KeyFrame>
						<KeyFrame>1, 2.6,2.6</KeyFrame>
					</Curve>
					<Set name="lifeTime">0.8</Set>
					<Set name="flipX" source="flipX" />
				</Particle>
			</ParticleSystem>
			<ParticleSystem name="ps_Trail1">
				<Emitter>
					<Set name="particlesPerEmission">1</Set>
					<Set name="particlesToEmit">1</Set>
					<Set name="emissionInterval">0.05</Set>
					<Set name="checkParticleNumToEmit">false</Set>
					<Set name="infParticles">true</Set>
					<Set name="infLifeTime">true</Set>
					<Set name="offset">0,0</Set>
					<Set name="lifeTime">0.1</Set>
				</Emitter>
				<Particle randomSpriteFrame="true">
					<Set name="sprite">s_Trail</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Set name="lifeTime">1</Set>
					<Set name="initialVelocity">0,0</Set>
					<Random name="offset" min="-4,-4" max="4,4"/>
					<Curve name="initialAlpha">
						<KeyFrame>0, 1</KeyFrame>
						<KeyFrame>1, 0</KeyFrame>
					</Curve>
					<Set name="initialScale">0.5,0.5</Set>
					<Random name="initialAngle" min="0" max="180"/>
					<Set name="inSpecificOrder">true</Set>
				</Particle>
			</ParticleSystem>
			<ParticleSystem name="ps_Trail2">
				<Emitter>
					<Set name="particlesPerEmission">1</Set>
					<Set name="particlesToEmit">1</Set>
					<Set name="emissionInterval">0.05</Set>
					<Set name="checkParticleNumToEmit">false</Set>
					<Set name="infParticles">true</Set>
					<Set name="infLifeTime">true</Set>
					<Set name="offset">0,0</Set>
					<Set name="lifeTime">0.1</Set>
				</Emitter>
				<Particle randomSpriteFrame="true">
					<Set name="sprite">s_Trail</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Set name="lifeTime">1</Set>
					<Set name="initialVelocity">0,0</Set>
					<Random name="offset" min="-4,-4" max="4,4"/>
					<Curve name="initialAlpha">
						<KeyFrame>0, 1</KeyFrame>
						<KeyFrame>1, 0</KeyFrame>
					</Curve>
					<Set name="initialScale">0.5,0.5</Set>
					<Random name="initialAngle" min="0" max="180"/>
					<Set name="inSpecificOrder">true</Set>
				</Particle>
			</ParticleSystem>
			<ParticleSystem name="ps_Trail3">
				<Emitter>
					<Set name="particlesPerEmission">1</Set>
					<Set name="particlesToEmit">1</Set>
					<Set name="emissionInterval">0.05</Set>
					<Set name="checkParticleNumToEmit">false</Set>
					<Set name="infParticles">true</Set>
					<Set name="infLifeTime">true</Set>
					<Set name="offset">0,0</Set>
					<Set name="lifeTime">0.1</Set>
				</Emitter>
				<Particle randomSpriteFrame="true">
					<Set name="sprite">s_Trail</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Set name="lifeTime">1</Set>
					<Set name="initialVelocity">0,0</Set>
					<Random name="offset" min="-4,-4" max="4,4"/>
					<Curve name="initialAlpha">
						<KeyFrame>0, 1</KeyFrame>
						<KeyFrame>1, 0</KeyFrame>
					</Curve>
					<Set name="initialScale">0.5,0.5</Set>
					<Random name="initialAngle" min="0" max="180"/>
					<Set name="inSpecificOrder">true</Set>
				</Particle>
			</ParticleSystem>
			<ParticleSystem name="ps_Hit">
				<Emitter>
					<Set name="offset">0,0</Set>
					<Set name="lifeTime">0</Set>
					<Set name="particlesPerEmission">6</Set>
					<Set name="delayTimer">0.0</Set>
				</Emitter>
				<Particle randomSpriteFrame="true">
					<Set name="sprite">s_Trail</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Set name="lifeTime">0.5</Set>
					<Set name="initalRGB">1,1,1</Set>
					<Set name="initialScale">0.5,0.5</Set>
					<Set name="rotateWithVelocity">true</Set>
					<Curve name="initialAlpha">
						<KeyFrame>0, 1</KeyFrame>
						<KeyFrame>0.75, 1</KeyFrame>
						<KeyFrame>1, 0</KeyFrame>
					</Curve>
					<RandomRadial name="initialVelocity" angleRange="0,360" radiusRange="50,90"/>
				</Particle>
			</ParticleSystem>
		</ParticleSystems>
		<StateMachines>
			<StateMachine name="Punch">
				<States>
					<State name="True"/>
					<State name="False"/>
				</States>
				<Transitions>
					<Transition from="False" to="True">
						<Condition>
							<IsAction>PUNCH</IsAction>
						</Condition>
					</Transition>
					<Transition from="True" to="False">
						<Condition>
							<IsAction operatorType="NotEqual">PUNCH</IsAction>
						</Condition>
					</Transition>
				</Transitions>
			</StateMachine>
			<StateMachine name="PunchAnim">
				<States>
					<State name="Off"/>
					<State name="Start" ExitTime="0.5" />
					<State name="Continue"/>
					<State name="End" ExitTime="0.25" />
				</States>
				<Transitions>
					<Transition from="Off" to="Start">
						<Condition type="and">
							<IsAction>PUNCH</IsAction>
							<IsZombified>false</IsZombified>
						</Condition>
					</Transition>
					<Transition from="Start" to="Continue"/>
					<Transition from="Continue" to="End">
						<Condition>
							<IsAction operatorType="NotEqual">PUNCH</IsAction>
						</Condition>
					</Transition>
					<Transition from="End" to="Off"/>
				</Transitions>
			</StateMachine>
			<StateMachine name="Facing">
				<States>
					<State name="Left" />
					<State name="Right" />
				</States>
				<Transitions>
					<Transition to="Left" from="Right">
						<Condition>
							<IsFacingLeft>true</IsFacingLeft>
						</Condition>
					</Transition>
					<Transition to="Right" from="Left">
						<Condition type="or">
							<IsFacingLeft>false</IsFacingLeft>
						</Condition>
					</Transition>
				</Transitions>
			</StateMachine>
		</StateMachines>
		<VariableMap>
			<Set name="pearlRotation">0, 0, 0, 1</Set>
			<Set name="pearlRotationInc">0</Set>
			<Set name="pearlRotation2">0, 0, 0, 1</Set>
			<Set name="pearlRotationInc2">0</Set>
			<Set name="DeltaTime">0</Set>
			<Set name="context.pos">0, 0</Set>
			<Set name="target.pos">0, 0</Set>
			<Set name="initialPos">0, 0</Set>
			<Set name="handOffsetPos">20, -10</Set>
			<Set name="handOffsetPosFacing">0,0</Set>
			<Set name="movingPos">0, 0</Set>
			<Set name="pearlContextOffset">0, 0, 0</Set>
			<Set name="Player.GetFacing">0</Set>
			<Set name="flipX">false</Set>
		</VariableMap>
		<RenderOptions>
			<Default>
				<Set name="IgnoreDefaultDamagedTileEffect">true</Set>
			</Default>
		</RenderOptions>
	</Data>
	<RenderRules>
		<RenderInFront>
			<StopIf type="or">
				<IsSleepingOnaBed>true</IsSleepingOnaBed>
			</StopIf>
			<ArithmethicOperation LeftHandVariableName="initialPos" RightHandVariableName="context.pos" OperationType="Set"/>
			<ArithmethicOperation LeftHandVariableName="handOffsetPosFacing" RightHandVariableName="handOffsetPos" OperationType="Set"/>
			<ArithmethicOperation LeftHandVariableName="handOffsetPosFacing.x" RightHandVariableName="Player.GetFacing" OperationType="Multiply"/>
			<ArithmethicOperation LeftHandVariableName="initialPos" RightHandVariableName="handOffsetPosFacing" OperationType="Add"/>
			
			<ArithmethicOperation LeftHandVariableName="movingPos" RightHandVariableName="initialPos" OperationType="Set" onState="PunchAnim.Off"/>
			<ArithmethicOperation LeftHandVariableName="pearlContextOffset" RightHandVariableName="context.pos" OperationType="Set"/>
			<ArithmethicOperation LeftHandVariableName="pearlContextOffset" RightHandVariableName="movingPos" OperationType="Substract" />
			<ArithmethicOperation LeftHandVariableName="pearlContextOffset" RightHandVariableName="-1,-1,1" OperationType="Multiply" />

			<ArithmethicOperation LeftHandVariableName="pearlContextOffset.x" RightHandVariableName="Player.GetFacing" OperationType="Multiply" />

			<ArithmethicOperation LeftHandVariableName="flipX" RightHandVariableName="false" OperationType="Set" onState="Facing.Right" />
			<ArithmethicOperation LeftHandVariableName="flipX" RightHandVariableName="true" OperationType="Set" onState="Facing.Left" />

			<Translate>pearlContextOffset</Translate>
			<Rotate>pearlRotation</Rotate>
			
			<Group>
				<Translate>0,6,0</Translate>
				<Translate onState="PunchAnim.Start|PunchAnim.Continue">0,2,0</Translate>
				<Rotate>pearlRotation2</Rotate>
				<Translate onState="PunchAnim.Start|PunchAnim.Continue">0,4,0</Translate>
				<ParticleSystemUpdate name="ps_Trail1" onState="PunchAnim.Start|PunchAnim.End"/>
				<ParticleSystemRender name="ps_Trail1" />
				<SpriteRender name="s_Pearl"  blend="PREMULTIPLIED_ALPHA" scale="0.25,0.25" drawShadow="false" useFixedRotation="true"/>
				<SpriteRender name="s_PearlGlow"  blend="PREMULTIPLIED_ALPHA" scale="0.25,0.25" drawShadow="false" useFixedRotation="true"/>
			</Group>
			<Group>
				<Translate>-8,0,0</Translate>
				<Translate onState="PunchAnim.Start|PunchAnim.Continue">-2,0,0</Translate>
				<Rotate>pearlRotation2</Rotate>
				<Translate onState="PunchAnim.Start|PunchAnim.Continue">4,0,0</Translate>
				<ParticleSystemUpdate name="ps_Trail2" onState="PunchAnim.Start|PunchAnim.End"/>
				<ParticleSystemRender name="ps_Trail2" />
				<SpriteRender name="s_Pearl"  blend="PREMULTIPLIED_ALPHA" scale="0.25,0.25" drawShadow="false" useFixedRotation="true"/>
				<SpriteRender name="s_PearlGlow"  blend="PREMULTIPLIED_ALPHA" scale="0.25,0.25" drawShadow="false" useFixedRotation="true"/>
			</Group>
			<Group>
				<Translate>0,-6,0</Translate>
				<Translate onState="PunchAnim.Start|PunchAnim.Continue">0,-2,0</Translate>
				<Rotate>pearlRotation2</Rotate>
				<Translate onState="PunchAnim.Start|PunchAnim.Continue">0,-4,0</Translate>
				<ParticleSystemUpdate name="ps_Trail3" onState="PunchAnim.Start|PunchAnim.End"/>
				<ParticleSystemRender name="ps_Trail3" />
				<SpriteRender name="s_Pearl"  blend="PREMULTIPLIED_ALPHA" scale="0.25,0.25" drawShadow="false" useFixedRotation="true"/>
				<SpriteRender name="s_PearlGlow"  blend="PREMULTIPLIED_ALPHA" scale="0.25,0.25" drawShadow="false" useFixedRotation="true"/>
			</Group>
		</RenderInFront>
		<AddClothingParticles>
			<ParticleSystemUpdate name="ps_GodRay" onAction="PUNCH"/>
			<StopIf>
				<IsWearing slot="SHIRT">ITEM_ID_TACTICAL_STEALTH_DEVICE</IsWearing>
			</StopIf>
			<AvatarTransform class="ArmAngle">
				<Set name="armName">arm2Angle</Set>
				<Set name="armAngle">-90</Set>
			</AvatarTransform>
			<AvatarTransform class="ArmAngle" onState="Punch.True">
				<Set name="armName">arm2Angle</Set>
				<Set name="pointTowardsPunchTarget">true</Set>
			</AvatarTransform>
			<ArithmethicOperation LeftHandVariableName="pearlRotationInc" RightHandVariableName="90" OperationType="Set"/>
			<ArithmethicOperation LeftHandVariableName="pearlRotationInc" RightHandVariableName="DeltaTime" OperationType="Multiply"/>
			<ArithmethicOperation LeftHandVariableName="pearlRotation.x" RightHandVariableName="pearlRotationInc" OperationType="Add"/>

			<ArithmethicOperation LeftHandVariableName="pearlRotationInc2" RightHandVariableName="600" OperationType="Set" />
			<ArithmethicOperation LeftHandVariableName="pearlRotationInc2" RightHandVariableName="DeltaTime" OperationType="Multiply"/>
			<ArithmethicOperation LeftHandVariableName="pearlRotation2.x" RightHandVariableName="pearlRotationInc2" OperationType="Add"/>
		</AddClothingParticles>
		<OnDamagedTile>
			<ParticleSystemUpdate name="ps_Hit"/>
		</OnDamagedTile>
		<OnDestroyedTile>
			<ParticleSystemUpdate name="ps_Hit"/>
		</OnDestroyedTile>
	</RenderRules>
</ItemRenderer>