<?xml version="1.0"?>
<ItemRenderer>
	<Data>
		<Sprite name="s_Projectile" fileName="game/particles12.rttex" textureSize="32" frame="18,12" />
		<Sprite name="s_ProjectileHit" fileName="game/particles12.rttex" textureSize="32" frame="20,12" />
		<Sprite name="s_Shirt" fileName="game/player_cosmetics4.rttex" textureSize="32" frame="17,4" />
		<Sprite name="s_ShirtGlow" fileName="game/player_cosmetics4.rttex" textureSize="32" frame="16,4" />
		<Sprite name="s_ShirtPunch" fileName="game/player_cosmetics4.rttex" textureSize="32" frame="18,4" />
		<Sprite name="s_Transform" fileName="game/tf_page4.rttex" textureSize="64" frame="0,9" />
		<Sprite name="s_flash" fileName="game/tf_page4.rttex" textureSize="64" frame="15,9" />
		<Sprite name="s_shard" fileName="game/particles7.rttex" textureSize="32" frame="10,14" />
		<VariableMap>
			<Set name="projectileOffset">0,-16</Set>
			<Set name="DeltaTime">0</Set>
			<Set name="AirTimer">5</Set>
		</VariableMap>
		<Animations>
			<SpriteCurveAnimation name="a_ShirtGlow" sprite="s_ShirtGlow" isLoop="true" autoPlay="true" animTime="2000">
				<Curve name="alpha">
					<KeyFrame>0, 0</KeyFrame>
					<KeyFrame>0.5, 1</KeyFrame>
					<KeyFrame>1, 0</KeyFrame>
				</Curve>
			</SpriteCurveAnimation>
			<SpriteAnimation name="a_Projectile" sprite="s_Projectile" animTime="400">
				<Frame>19,12</Frame>
				<Frame>18,12</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_Transform_AirPunch" sprite="s_Transform" animTime="400" isLoop="true" playOnState="Main.AirPunch">
				<Frame>4,10</Frame>
				<Frame>5,10</Frame>
				<Frame>6,10</Frame>
				<Frame>7,10</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_Transform_LandIdle" sprite="s_Transform" animTime="1600" isLoop="true" playOnState="Main.LandIdle">
				<Frame>0,9</Frame>
				<Frame>1,9</Frame>
				<Frame>2,9</Frame>
				<Frame>3,9</Frame>
				<Frame>4,9</Frame>
				<Frame>5,9</Frame>
				<Frame>6,9</Frame>
				<Frame>7,9</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_Transform_LandMove" sprite="s_Transform" animTime="600" isLoop="true" playOnState="Main.LandMove">
				<Frame>8,9</Frame>
				<Frame>9,9</Frame>
				<Frame>10,9</Frame>
				<Frame>11,9</Frame>
				<Frame>12,9</Frame>
				<Frame>13,9</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_Transform_LandPunch" sprite="s_Transform" animTime="100" isLoop="true" playOnState="Main.LandPunch">
				<Frame>14,9</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_Transform_ToAir" sprite="s_Transform" animTime="600" playOnState="Main.TransformToAir">
				<Frame>10,10</Frame>
				<Frame>9,10</Frame>
				<Frame>8,10</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_Transform_Air" sprite="s_Transform" animTime="400" isLoop="true" playOnState="Main.Air|Main.AirUp">
				<Frame>0,10</Frame>
				<Frame>1,10</Frame>
				<Frame>2,10</Frame>
				<Frame>3,10</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_Transform_ToGround" sprite="s_Transform" animTime="600" playOnState="Main.TransformToLand">
				<Frame>8,10</Frame>
				<Frame>9,10</Frame>
				<Frame>11,10</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_shards" sprite="s_shard" animTime="200">
				<Frame>10,14</Frame>
				<Frame>11,14</Frame>
			</SpriteAnimation>
		</Animations>
		<ParticleSystems>
			<ParticleSystem name="ps_Projectile1">
				<Emitter>
					<Set name="offset" source="projectileOffset" />
					<Set name="lifeTime">0</Set>
					<Set name="emissionInterval">0</Set>
					<Set name="infParticles">false</Set>
					<Set name="infLifeTime">false</Set>
					<Set name="checkParticleNumToEmit">false</Set>
					<Set name="particlesPerEmission">1</Set>
					<Set name="particlesToEmit">0</Set>
					<Set name="delayTimer">0</Set>
				</Emitter>
				<Particle>
					<Set name="sprite">s_Projectile</Set>
					<Set name="offset">8, 0</Set>
					<Set name="renderAlignment">RIGHT_CENTER</Set>
					<Set name="interpolateVelocity">true</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Set name="rotateWithVelocity">true</Set>
					<Random name="targetPosOffset" min="-8, -8" max="8, 8" />
					<Select name="finalAlpha" input="punchCount">
						<Item>1.4</Item>
						<Item>1</Item>
						<Item>1.4</Item>
					</Select>
					<Set name="lifeTime">0.5</Set>
					<VectorTo name="initialVelocity" source="targetPos" offset="targetPosOffset" duration="lifeTime" x="finalAlpha" angle="initialAngle" />
					<VectorTo name="finalVelocity" source="targetPos" offset="targetPosOffset" duration="lifeTime" x="finalAlpha" angle="finalAngle" />
					<Select name="initialAngle" input="punchCount">
						<Item>45</Item>
						<Item>0</Item>
						<Item>-45</Item>
					</Select>
					<Select name="finalAngle" input="punchCount">
						<Item>-45</Item>
						<Item>0</Item>
						<Item>45</Item>
					</Select>
					<OnFinish>
						<ParticleSystemName>ps_ProjectileHit</ParticleSystemName>
					</OnFinish>
				</Particle>
			</ParticleSystem>
			<ParticleSystem name="ps_Projectile2">
				<Emitter>
					<Set name="offset" source="projectileOffset" />
					<Set name="lifeTime">0</Set>
					<Set name="emissionInterval">0</Set>
					<Set name="infParticles">false</Set>
					<Set name="infLifeTime">false</Set>
					<Set name="checkParticleNumToEmit">false</Set>
					<Set name="particlesPerEmission">1</Set>
					<Set name="particlesToEmit">0</Set>
					<Set name="delayTimer">0</Set>
				</Emitter>
				<Particle>
					<Set name="sprite">s_Projectile</Set>
					<Set name="offset">-8, 0</Set>
					<Set name="renderAlignment">RIGHT_CENTER</Set>
					<Set name="interpolateVelocity">true</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Set name="rotateWithVelocity">true</Set>
					<Random name="targetPosOffset" min="-8, -8" max="8, 8" />
					<Select name="finalAlpha" input="punchCount">
						<Item>1</Item>
						<Item>1.4</Item>
						<Item>1.4</Item>
					</Select>
					<Set name="lifeTime">0.4</Set>
					<VectorTo name="initialVelocity" source="targetPos" offset="targetPosOffset" duration="lifeTime" x="finalAlpha" angle="initialAngle" />
					<VectorTo name="finalVelocity" source="targetPos" offset="targetPosOffset" duration="lifeTime" x="finalAlpha" angle="finalAngle" />
					<Select name="initialAngle" input="punchCount">
						<Item>0</Item>
						<Item>-45</Item>
						<Item>45</Item>
					</Select>
					<Select name="finalAngle" input="punchCount">
						<Item>0</Item>
						<Item>45</Item>
						<Item>-45</Item>
					</Select>
					<OnFinish>
						<ParticleSystemName>ps_ProjectileHit</ParticleSystemName>
					</OnFinish>
				</Particle>
			</ParticleSystem>
			<ParticleSystem name="ps_ProjectileHit">
				<Emitter>
					<Set name="offset">0, 0</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_ProjectileHit</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.3</Set>
					<Random name="initialAngle" min="0" max="360" />
					<Select name="initialRotationRate" input="randomNumber">
						<Item>-720</Item>
						<Item>720</Item>
					</Select>
				</Particle>
			</ParticleSystem>
			<ParticleSystem name="ps_flash" updateStage="AddClothingParticles" updateState="IsTransformed.Changing">
				<Emitter>
					<Set name="offset">0, -24</Set>
					<Set name="emissionInterval">0.1</Set>
					<Set name="infParticles">true</Set>
					<Set name="infLifeTime">true</Set>
					<Set name="checkParticleNumToEmit">true</Set>
					<Set name="particlesPerEmission">1</Set>
					<Set name="particlesToEmit">1</Set>
				</Emitter>
				<Particle usePlayerFacing="true" usePlayerFacing="true">
					<Set name="sprite">s_flash</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Curve name="initialAlpha">
						<KeyFrame>0, 1</KeyFrame>
						<KeyFrame>1, 0</KeyFrame>
					</Curve>
					<Curve name="initialScale">
						<KeyFrame>0, 1, 1</KeyFrame>
						<KeyFrame>1, 1.25, 1.25</KeyFrame>
					</Curve>
					<Set name="lifeTime">0.5</Set>
				</Particle>
			</ParticleSystem>
			<ParticleSystem name="ps_flashShards" updateStage="AddClothingParticles" updateState="IsTransformed.Changing">
				<Emitter>
					<Set name="offset">0, -32</Set>
					<Set name="emissionInterval">0.1</Set>
					<Set name="infParticles">true</Set>
					<Set name="infLifeTime">true</Set>
					<Set name="checkParticleNumToEmit">true</Set>
					<Set name="particlesPerEmission">16</Set>
					<Set name="particlesToEmit">1</Set>
				</Emitter>
				<Particle randomSpriteFrame="true" usePlayerFacing="true" usePlayerFacing="true">
					<Set name="sprite">s_shard</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Curve name="initialAlpha">
						<KeyFrame>0, 0.5</KeyFrame>
						<KeyFrame>0.8, 0.5</KeyFrame>
						<KeyFrame>1, 0</KeyFrame>
					</Curve>
					<Set name="initialScale">0.5, 0.5</Set>
					<Set name="lifeTime">0.5</Set>
					<RandomRadial name="initialVelocity" angleRange="0,360" radiusRange="120,170" />
				</Particle>
			</ParticleSystem>
		</ParticleSystems>
		<StateMachines>
			<StateMachine name="Punch">
				<States>
					<State name="No" />
					<State name="Yes" />
				</States>
				<Transitions>
					<Transition to="No" from="Yes">
						<Condition>
							<IsAction operatorType="NotEqual">PUNCH</IsAction>
						</Condition>
					</Transition>
					<Transition to="Yes" from="No">
						<Condition>
							<IsAction>PUNCH</IsAction>
						</Condition>
					</Transition>
				</Transitions>
			</StateMachine>
			<StateMachine name="IsTransformed">
				<States>
					<State name="No" />
					<State name="Yes" />
					<State name="Changing" />
				</States>
				<Transitions>
					<Transition to="Yes" from="Changing">
						<Condition>
							<IsItemTransformed>true</IsItemTransformed>
						</Condition>
					</Transition>
					<Transition to="No" from="Changing">
						<Condition>
							<IsItemTransformed>false</IsItemTransformed>
						</Condition>
					</Transition>
					<Transition to="Changing" from="Yes">
						<Condition>
							<IsItemTransformed>false</IsItemTransformed>
						</Condition>
					</Transition>
					<Transition to="Changing" from="No">
						<Condition>
							<IsItemTransformed>true</IsItemTransformed>
						</Condition>
					</Transition>
				</Transitions>
			</StateMachine>
			<StateMachine name="Main">
				<States>
					<State name="LandIdle" />
					<State name="LandMove" />
					<State name="TransformToAir" ExitTime="0.6" />
					<State name="Air"/>
					<State name="AirUp"/>
					<State name="TransformToLand" ExitTime="0.6" />
					<State name="LandPunch" />
					<State name="AirPunch" />
				</States>
				<Transitions>
					<Transition to="LandMove" from="LandIdle|LandPunch|TransformToLand">
						<Condition type="and">
							<IsVariableFloat name="speed.length" operator="Greater" abs="true">0.1</IsVariableFloat>
							<IsAction operatorType="NotEqual">PUNCH</IsAction>
							<IsVariableBool name="onGround">true</IsVariableBool>
						</Condition>
					</Transition>
					<Transition to="LandIdle" from="LandMove|LandPunch|TransformToLand">
						<Condition type="and">
							<IsVariableFloat name="speed.length" operator="Less" abs="true">0.1</IsVariableFloat>
							<IsAction operatorType="NotEqual">PUNCH</IsAction>
							<IsVariableBool name="onGround">true</IsVariableBool>
						</Condition>
					</Transition>
					<Transition to="LandPunch" from="LandIdle|LandMove|AirPunch|TransformToLand">
						<Condition type="and">
							<IsAction>PUNCH</IsAction>
							<CompareCustomVariable operatorType="Less" VariableNameToCompare="AirTimer">0</CompareCustomVariable>
						</Condition>
					</Transition>
					<Transition to="TransformToAir" from="LandIdle|LandMove">
						<Condition>
							<IsAction>JUMP</IsAction>
						</Condition>
					</Transition>
					<Transition to="Air" from="TransformToAir|AirPunch|AirUp">
						<Condition type="and">
							<IsAction operatorType="NotEqual">PUNCH</IsAction>
							<CompareCustomVariable operatorType="Greater" VariableNameToCompare="AirTimer">0</CompareCustomVariable>
							<IsVariableFloat name="speed.y" operator="Greater">-0.1</IsVariableFloat>
						</Condition>
					</Transition>
					<Transition to="AirUp" from="Air">
						<Condition type="and">
							<IsAction operatorType="NotEqual">PUNCH</IsAction>
							<IsVariableFloat name="speed.y" operator="Less">-0.1</IsVariableFloat>
						</Condition>
					</Transition>
					<Transition to="TransformToLand" from="Air|AirUp">
						<Condition type="and">
							<IsVariableBool name="onGround">true</IsVariableBool>
							<CompareCustomVariable operatorType="Less" VariableNameToCompare="AirTimer">0</CompareCustomVariable>
						</Condition>
					</Transition>
					<Transition to="AirPunch" from="Air|AirUp|LandPunch">
						<Condition type="and">
							<IsAction>PUNCH</IsAction>
							<CompareCustomVariable operatorType="Greater" VariableNameToCompare="AirTimer">0</CompareCustomVariable>
						</Condition>
					</Transition>
				</Transitions>
			</StateMachine>
		</StateMachines>
		<RenderOptions />
	</Data>
	<RenderRules>
		<Update>
			<Group onState="IsTransformed.Yes">
				<StopIf type="or">
					<IsRenderMod>RENDER_MOD_PLAYER_SHADOW</IsRenderMod>
				</StopIf>
				<ArithmethicOperation LeftHandVariableName="AirTimer" RightHandVariableName="5" OperationType="Set" onState="Main.TransformToAir|Main.AirUp" />
				<ArithmethicOperation LeftHandVariableName="AirTimer" RightHandVariableName="DeltaTime" OperationType="Substract" onState="Main.Air" />
			</Group>
		</Update>
		<OnPunchStart>
			<Group onState="IsTransformed.Yes">
				<ArithmethicOperation LeftHandVariableName="projectileOffset" RightHandVariableName="8,-26" OperationType="Set" onState="Main.LandPunch" />
				<ArithmethicOperation LeftHandVariableName="projectileOffset" RightHandVariableName="8,-24" OperationType="Set" onState="Main.AirPunch" />
			</Group>
			<Group onState="IsTransformed.No">
				<ArithmethicOperation LeftHandVariableName="projectileOffset" RightHandVariableName="8,-18" OperationType="Set" />
			</Group>
			<ParticleSystemUpdate name="ps_Projectile2" />
			<ParticleSystemUpdate name="ps_Projectile1" />
		</OnPunchStart>
		<OnPunchUpdate>
			<AvatarTransform class="Face">
				<Set name="face">MAD</Set>
			</AvatarTransform>
			<AvatarTransform class="ArmAngle">
				<Set name="armName">arm2Angle</Set>
				<Set name="armAngle">60</Set>
			</AvatarTransform>
			<AvatarTransform class="ArmAngle">
				<Set name="armName">arm1Angle</Set>
				<Set name="armAngle">-60</Set>
			</AvatarTransform>
		</OnPunchUpdate>
		<RenderTransform>
			<Translate>0,-8,0</Translate>
			<SpriteRender name="s_Transform" blend="NORMAL" alignment="CENTER" drawShadow="true" />
		</RenderTransform>
		<RenderShirt>
			<Group onState="Punch.No">
				<SpriteRender name="s_Shirt" blend="NORMAL" alignment="DOWN_CENTER" drawShadow="true" />
				<SpriteRender name="s_ShirtGlow" blend="NORMAL" alignment="DOWN_CENTER" drawShadow="true" />
			</Group>
			<Group onState="Punch.Yes">
				<SpriteRender name="s_ShirtPunch" blend="NORMAL" alignment="DOWN_CENTER" drawShadow="true" />
			</Group>
		</RenderShirt>
	</RenderRules>
</ItemRenderer>
