<?xml version="1.0"?>
<ItemRenderer>
	<Data>
		<Sprite name="s_clouds" fileName="game/particles12.rttex" textureSize="32" frame="30,15" />
		<Sprite name="s_clouds2" fileName="game/particles12.rttex" textureSize="32" frame="31,15" />
		<Sprite name="s_pants" fileName="game/player_cosmetics4.rttex" textureSize="32" frame="12, 8" />
		<Sprite name="s_door" fileName="game/particles_large17.rttex" textureSize="64" frame="7, 14" />
		<Sprite name="s_door_glow" fileName="game/particles_large17.rttex" textureSize="64" frame="11, 14" />

		<Sprite name="particle_slash" fileName="game/particles12.rttex" textureSize="32" frame="28,21"/>
		<Sprite name="particle_punch_trail" fileName="game/particles12.rttex" textureSize="32" frame="29,21"/>

		<Animations>
			<SpriteAnimation name="a_particle_punch_trail" sprite="particle_punch_trail">
				<Frame>29, 21</Frame>
				<Frame>30, 21</Frame>
				<Frame>31, 21</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_clouds" sprite="s_clouds" animTime="200">
				<Frame>30, 15</Frame>
				<Frame>31, 15</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="a_clouds2" sprite="s_clouds2" animTime="200">
				<Frame>30, 15</Frame>
				<Frame>31, 15</Frame>
			</SpriteAnimation>

			<InterpolationFloatAnimation name="door_glow_punch_inter" variableName="door_alpha_var" playOnState="Punch.Start|Punch.Punching|Punch.PunchStop" targetVariableName="door_alpha_max" animTime="50"/>

			<SpriteAnimation name="s_door_on_punch_start" sprite="s_door" animTime="200" playOnState="Punch.Start">
				<Frame>12, 14</Frame>
				<Frame>13, 14</Frame>
				<Frame>14, 14</Frame>
			</SpriteAnimation>
			<SpriteAnimation name="s_door_on_punch_continue" sprite="s_door" animTime="50" playOnState="Punch.Punching">
				<Frame>15, 14</Frame>
			</SpriteAnimation>

			<SpriteAnimation name="s_door_on_punch_end" sprite="s_door" animTime="200" playOnState="Punch.PunchStop">
				<Frame>14, 14</Frame>
				<Frame>13, 14</Frame>
				<Frame>12, 14</Frame>
			</SpriteAnimation>			
			
			<SpriteAnimation name="s_door_on_punch_idle" sprite="s_door" animTime="600" playOnState="Punch.No">
				<Frame>7, 14</Frame>
				<Frame>8, 14</Frame>
				<Frame>9, 14</Frame>
				<Frame>10, 14</Frame>
			</SpriteAnimation>

			<CurveAnimationVec3 name="door_hover" autoPlay="t" isLoop="true" animTime="1250">
				<Curve name="door_hover_position">
					<KeyFrame>0, -13, -3.5, 0</KeyFrame>
					<KeyFrame>0.5, -13, 1, 0</KeyFrame>
					<KeyFrame>1, -13, -3.5, 0</KeyFrame>
				</Curve>
			</CurveAnimationVec3>
		</Animations>
		<StateMachines>
			<StateMachine name="Punch">
				<States>
					<State name="No" />
					<State name="Start" ExitTime="0.21"/>
					<State name="Punching" />
					<State name="PunchStop" ExitTime="0.21"/>
				</States>
				<Transitions>
					<Transition to="No" from="PunchStop"/>
					<Transition to="Start" from="No">
						<Condition>
							<IsAction>PUNCH</IsAction>
						</Condition>
					</Transition>
					<Transition to="Punching" from="Start"/>
					<Transition to="PunchStop" from="Punching">
						<Condition>
							<IsAction operatorType="NotEqual">PUNCH</IsAction>
						</Condition>
					</Transition>
				</Transitions>
			</StateMachine>
			<StateMachine name="Glow">
				<States>
					<State name="Increase"/>
					<State name="Decrease"/>
				</States>
				<Transitions>
					<Transition to="Increase" from="Decrease">
						<Condition>
							<CompareCustomVariable operatorType="Less" VariableNameToCompare="door_alpha_var" RightHSVariableNameToCompare="door_alpha_delta">0.001</CompareCustomVariable>
						</Condition>
					</Transition>
					<Transition to="Decrease" from="Increase">
						<Condition>
							<CompareCustomVariable operatorType="Greater" VariableNameToCompare="door_alpha_var">1.05</CompareCustomVariable>
						</Condition>
					</Transition>
				</Transitions>
			</StateMachine>
		</StateMachines>
		<ParticleSystems>
			<ParticleSystem name="trail_particle">
				<Emitter>
					<Set name="lifeTime">0.5</Set>
					<Set name="particlesPerEmission">1</Set>
					<Set name="particlesToEmit">16</Set>
					<Set name="emissionInterval">0.035</Set>
					<Set name="checkParticleNumToEmit">true</Set>
				</Emitter>
				<Particle randomSpriteFrame="true">
					<Random name="offset" min="-4, -2" max="4, 2" />
					<Set name="sprite">particle_punch_trail</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Curve name="initialAlpha">
						<KeyFrame>0, 1</KeyFrame>
						<KeyFrame>1, 0</KeyFrame>
					</Curve>
					<Random name="initialScale" min="0.5" max="1" />
					<Set name="lifeTime">0.3</Set>
				</Particle>
			</ParticleSystem>
			<ParticleSystem name="slash_particle"  secondary="trail_particle">
				<Emitter>
					<Set name="offset">-13, -18</Set>
					<Set name="emissionInterval">0.25</Set>
					<Set name="lifeTime">0.25</Set>
					<Set name="particlesPerEmission">1</Set>
					<Set name="particlesToEmit">1</Set>
					<Set name="offsetFacing">true</Set>
				</Emitter>
				<Particle>
					<Set name="sprite">particle_slash</Set>
					<Set name="inSpecificOrder">false</Set>
					<Set name="interpolateVelocity">true</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Set name="rotateWithVelocity">true</Set>
					<Select name="initialAngle" input="punchCount">
						<Item>30</Item>
						<Item>0</Item>
						<Item>-30</Item>
					</Select>
					<Select name="finalAngle" input="punchCount">
						<Item>-30</Item>
						<Item>0</Item>
						<Item>30</Item>
					</Select>
					<Select name="finalAlpha" input="punchCount">
						<Item>1.05f</Item>
						<Item>1.f</Item>
						<Item>1.05f</Item>
					</Select>
					<Set name="lifeTime">0.5</Set>
					<VectorTo name="initialVelocity" source="targetPos" duration="lifeTime" x="finalAlpha" angle="initialAngle" />
					<VectorTo name="finalVelocity" source="targetPos" duration="lifeTime" x="finalAlpha" angle="finalAngle" />
				</Particle>
			</ParticleSystem>
			<ParticleSystem name="ps_left_cloud">
				<Emitter>
					<Set name="offset">0, -24</Set>
					<Set name="enable">true</Set>
					<Set name="offsetFacing">false</Set>
					<Random name="emissionInterval" min="2" max="5" />
					<Set name="useCharacterPos">false</Set>
					<Set name="infParticles">true</Set>
					<Set name="infLifeTime">true</Set>
					<Set name="particlesPerEmission">1</Set>
				</Emitter>
				<Particle randomSpriteFrame="true">
					<Random name="offset" min="-14, -20" max="-7, 20" />
					<Set name="sprite">s_clouds</Set>
					<Set name="relativeToEmitter">true</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Set name="inSpecificOrder">true</Set>
					<Random name="lifeTime" min="2" max="4"/>
					<Random name="initialScale" min="0.75" max="1"/>
					<Random name="initialVelocity" min="-7,0" max="-5,0"/>
					<Curve name="initialAlpha">
						<KeyFrame>0, 0</KeyFrame>
						<KeyFrame>0.3, 0.9</KeyFrame>
						<KeyFrame>0.7, 0.9</KeyFrame>
						<KeyFrame>1, 0</KeyFrame>
					</Curve>
				</Particle>
			</ParticleSystem>
			<ParticleSystem name="ps_right_cloud">
				<Emitter>
					<Set name="offset">0, -24</Set>
					<Set name="enable">true</Set>
					<Set name="offsetFacing">false</Set>
					<Random name="emissionInterval" min="3" max="4" />
					<Set name="useCharacterPos">false</Set>
					<Set name="infParticles">true</Set>
					<Set name="infLifeTime">true</Set>
					<Set name="particlesPerEmission">1</Set>
				</Emitter>
				<Particle randomSpriteFrame="true">
					<Random name="offset" min="7, -8" max="14, 16" />
					<Set name="sprite">s_clouds2</Set>
					<Set name="relativeToEmitter">true</Set>
					<Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
					<Set name="inSpecificOrder">true</Set>
					<Random name="lifeTime" min="2" max="4"/>
					<Random name="initialScale" min="0.75" max="1"/>
					<Random name="initialVelocity" min="5,0" max="8,0"/>
					<Curve name="initialAlpha">
						<KeyFrame>0, 0</KeyFrame>
						<KeyFrame>0.3, 0.9</KeyFrame>
						<KeyFrame>0.7, 0.9</KeyFrame>
						<KeyFrame>1, 0</KeyFrame>
					</Curve>
				</Particle>
			</ParticleSystem>
		</ParticleSystems>

		<VariableMap>
			<Set name="DeltaTime">0</Set>
			<Set name="door_hover_position">-13, -16, 0</Set>
			<Set name="door_alpha_var">1</Set>
			<Set name="door_alpha_min">0</Set>
			<Set name="door_alpha_max">1</Set>

			<Set name="door_alpha_speed">0.333</Set>
			<Set name="door_alpha_delta">0</Set>
		</VariableMap>
	</Data>
	<RenderRules>
		<OnPunchStart>
			<Translate>door_hover_position</Translate>
			<ParticleSystemUpdate name="slash_particle"/>
		</OnPunchStart>
		<OnPunchUpdate>
			<AvatarTransform class="ArmAngle">
				<Set name="armName">arm1Angle</Set>
				<Set name="pointTowardsPunchTarget">true</Set>
			</AvatarTransform>
			<AvatarTransform class="Face">
				<Set name="face">MAD</Set>
			</AvatarTransform>
		</OnPunchUpdate>
		<RenderPants>
			<SpriteRender name="s_pants" alignment="DOWN_CENTER" />
		</RenderPants>
		<RenderBehind value="playerCenter">
			<StopIf>
				<IsTrnsformed>true</IsTrnsformed>
				<IsSitting>true</IsSitting>
				<IsSleepingOnaBed>true</IsSleepingOnaBed>
				<IsWearing slot="SHIRT">ITEM_ID_TACTICAL_STEALTH_DEVICE</IsWearing>
        <IsZombified>true</IsZombified>
			</StopIf>
			<Translate>door_hover_position</Translate>
			<Group>
				<Alpha>door_alpha_var</Alpha>
				<SpriteRender name="s_door_glow" alignment="DOWN_CENTER" drawShadow="false"/>
			</Group>

			<SpriteRender name="s_door" alignment="DOWN_CENTER"/>

			<ParticleSystemRender name="slash_particle" />
			<ParticleSystemRender name="ps_left_cloud" />
			<ParticleSystemRender name="ps_right_cloud" />

			<Group onState="Punch.No">
        <StopIf type="or">
          <IsRenderMod>RENDER_MOD_SPIRIT_GUIDE</IsRenderMod>
          <IsRenderMod>RENDER_MOD_RAINBOW_GUY</IsRenderMod>
          <IsRenderMod>RENDER_MOD_PLAYER_SHADOW</IsRenderMod>
          <IsRenderMod>RENDER_MOD_MINI_YOU</IsRenderMod>
          <IsRenderMod>RENDER_MOD_MANNEQUIN</IsRenderMod>
        </StopIf>
				<ArithmethicOperation
					LeftHandVariableName="door_alpha_delta"
					RightHandVariableName="door_alpha_speed"
					OperationType="Set" />
				<ArithmethicOperation
					LeftHandVariableName="door_alpha_delta"
					RightHandVariableName="DeltaTime"
					OperationType="Multiply" />

				<ArithmethicOperation
					LeftHandVariableName="door_alpha_var"
					RightHandVariableName="door_alpha_delta"
					OperationType="Add"
					onState="Glow.Increase" />

				<ArithmethicOperation
					LeftHandVariableName="door_alpha_var"
					RightHandVariableName="door_alpha_delta"
					OperationType="Substract"
					onState="Glow.Decrease" />
			</Group>

		</RenderBehind>

		<AddClothingParticles>
			<StopIf>
				<IsZombified>true</IsZombified>
				<IsTrnsformed>true</IsTrnsformed>
				<IsSitting>true</IsSitting>
				<IsSleepingOnaBed>true</IsSleepingOnaBed>
				<IsWearing slot="SHIRT">ITEM_ID_TACTICAL_STEALTH_DEVICE</IsWearing>
			</StopIf>
			<Translate>door_hover_position</Translate>
			<ParticleSystemUpdate name="ps_left_cloud"/>
			<ParticleSystemUpdate name="ps_right_cloud"/>
		</AddClothingParticles>
	</RenderRules>
</ItemRenderer>
