<?xml version="1.0"?>
<ItemRenderer>
  <Data>
    <Sprite name="s_frontArm" fileName="game/player_cosmetics4.rttex" textureSize="32" frame="28,6" />
    <Sprite name="s_backArm" fileName="game/player_cosmetics4.rttex" textureSize="32" frame="29,6" />
    <Sprite name="s_robe" fileName="game/player_cosmetics4.rttex" textureSize="32" frame="30,6" />
    <Sprite name="s_punchGodRays" fileName="game/particles_large17.rttex" textureSize="64" frame="10,1" />
    <Sprite name="s_damageGodRays" fileName="game/particles_large17.rttex" textureSize="64" frame="14,1" />
    <Sprite name="s_punchSparkles" fileName="game/particles12.rttex" textureSize="32" frame="0,17" />
    <Sprite name="s_transform" fileName="game/tf_page4.rttex" textureSize="64" frame="0,15" />

    <StateMachines>
      <StateMachine name="Motion">
        <States>
          <State name="Idle" />
          <State name="Punch" />
        </States>
        <Transitions>
          <Transition to="Idle" from="Punch">
            <Condition>
              <IsAction operatorType="NotEqual">PUNCH</IsAction>
            </Condition>
          </Transition>
          <Transition to="Punch" from="Idle">
            <Condition>
              <IsAction>PUNCH</IsAction>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
      <StateMachine name="Transform">
        <States>
          <State name="Idle" />
          <State name="Walk" />
          <State name="Jump" />
          <State name="Fall" />
          <State name="Punch" />
        </States>
        <Transitions>
          <Transition to="Idle" from="Walk|Fall|Punch|Jump">
            <Condition type="and">
              <IsVariableBool name="onGround">true</IsVariableBool>
              <IsVariableFloat name="speed.length" operator="Less" abs="true">0.1</IsVariableFloat>
              <IsAction operator="NotEqual">PUNCH</IsAction>
            </Condition>
          </Transition>
          <Transition to="Walk" from="Idle|Fall|Punch|Jump">
            <Condition type="and">
              <IsVariableBool name="onGround">true</IsVariableBool>
              <IsVariableFloat name="speed.length" operator="Greater" abs="true">0.1</IsVariableFloat>
              <IsAction operator="NotEqual">PUNCH</IsAction>
            </Condition>
          </Transition>
          <Transition to="Jump" from="Idle|Walk|Fall|Punch">
            <Condition type="and">
              <IsVariableBool name="onGround">false</IsVariableBool>
              <IsVariableFloat name="speed.y" operator="Less">-0.1</IsVariableFloat>
              <IsAction operator="NotEqual">PUNCH</IsAction>
            </Condition>
          </Transition>
          <Transition to="Fall" from="Jump|Idle|Walk|Punch">
            <Condition type="and">
              <IsVariableBool name="onGround">false</IsVariableBool>
              <IsVariableFloat name="speed.y" operator="Greater">0.1</IsVariableFloat>
              <IsAction operator="NotEqual">PUNCH</IsAction>
            </Condition>
          </Transition>
          <Transition to="Punch" from="Idle|Walk|Jump|Fall">
            <Condition type="and">
              <IsAction>PUNCH</IsAction>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
      <StateMachine name="IsTransformed">
        <States>
          <State name="No" />
          <State name="Yes" />
        </States>
        <Transitions>
          <Transition to="Yes" from="No">
            <Condition>
              <IsItemTransformed>true</IsItemTransformed>
            </Condition>
          </Transition>
          <Transition to="No" from="Yes">
            <Condition>
              <IsItemTransformed>false</IsItemTransformed>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
    </StateMachines>

    <VariableMap>
      <Set name="frontArmRotation">0, 0, 0, 1</Set>
      <Set name="backArmRotation">0, 0, 0, 1</Set>
    </VariableMap>

    <Animations>
      <SpriteAnimation name="a_robe" sprite="s_robe" isLoop="true" animTime="200" playOnState="Motion.Idle">
        <Frame>30,6</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_robePunch" sprite="s_robe" isLoop="true" animTime="200" playOnState="Motion.Punch">
        <Frame>30,6</Frame>
        <Frame>31,6</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_punchGodRays" sprite="s_punchGodRays">
        <Frame>10,1</Frame>
        <Frame>11,1</Frame>
        <Frame>12,1</Frame>
        <Frame>13,1</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_punchSparkles" sprite="s_punchSparkles" animTime="850">
        <Frame>2,17</Frame>
        <Frame>0,17</Frame>
        <Frame>1,17</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_idle" sprite="s_transform" animTime="1600" isLoop="true" playOnState="Transform.Idle">
        <Frame>0,15</Frame>
        <Frame>1,15</Frame>
        <Frame>2,15</Frame>
        <Frame>3,15</Frame>
        <Frame>4,15</Frame>
        <Frame>5,15</Frame>
        <Frame>6,15</Frame>
        <Frame>7,15</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_walk" sprite="s_transform" animTime="500" isLoop="true" playOnState="Transform.Walk">
        <Frame>8,15</Frame>
        <Frame>9,15</Frame>
        <Frame>10,15</Frame>
        <Frame>11,15</Frame>
        <Frame>12,15</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_jump" sprite="s_transform" animTime="400" isLoop="true" playOnState="Transform.Jump">
        <Frame>9,14</Frame>
        <Frame>10,14</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_fall" sprite="s_transform" animTime="400" isLoop="true" playOnState="Transform.Fall">
        <Frame>11,14</Frame>
        <Frame>12,14</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_punch" sprite="s_transform" animTime="200" isLoop="true" playOnState="Transform.Punch">
        <Frame>13,14</Frame>
        <Frame>14,14</Frame>
      </SpriteAnimation>
    </Animations>

    <ParticleSystems>
      <ParticleSystem name="ps_punchGodRays" updateStage="AddClothingParticles" updateState="Motion.Punch">
        <Emitter>
          <Set name="lifeTime">15</Set>
          <Set name="emissionInterval">0.2</Set>
          <Set name="infParticles">true</Set>
          <Set name="particlesPerEmission">1</Set>
          <Set name="offset">0,-44</Set>
        </Emitter>
        <Particle randomSpriteFrame="true">
          <Set name="sprite">s_punchGodRays</Set>
          <Set name="relativeToEmitter">true</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 0</KeyFrame>
            <KeyFrame>0.5, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Curve name="initialScale">
            <KeyFrame>0, 0.5, 0.5</KeyFrame>
            <KeyFrame>0.5, 0.75, 0.75</KeyFrame>
            <KeyFrame>1, 0.75, 0.75</KeyFrame>
          </Curve>
          <Set name="lifeTime">0.5</Set>
          <Random name="initialAngle" min="0" max="360"/>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_punchSparkles" updateStage="AddClothingParticles" updateState="Motion.Punch">
        <Emitter>
          <Set name="emissionInterval">0.1</Set>
          <Set name="infParticles">true</Set>
          <Set name="infLifeTime">true</Set>
          <Set name="particlesPerEmission">1</Set>
          <Set name="particlesToEmit">1</Set>
          <Set name="offset">0,-44</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_punchSparkles</Set>
          <Set name="relativeToEmitter">true</Set>
          <Random name="offset" min="-16,-16" max="16,16" />
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 0</KeyFrame>
            <KeyFrame>0.3, 1</KeyFrame>
            <KeyFrame>0.8, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Set name="lifeTime">0.85</Set>
          <Random name="initialScale" min="0.3" max="0.8"/>
          <Random name="initialRotationRate" min="-180" max="180"/>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_sparklesPunchTarget" updateStage="AddClothingParticles" updateState="Motion.Punch">
        <Emitter attachment="targetPos">
          <Set name="offset">0,0</Set>
          <Set name="offsetFacing">true</Set>
          <Set name="emissionInterval">0.2</Set>
          <Set name="infParticles">true</Set>
          <Set name="infLifeTime">true</Set>
          <Set name="particlesPerEmission">2</Set>
          <Set name="particlesToEmit">2</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_punchSparkles</Set>
          <Random name="offset" min="-8,-8.1" max="8,8.1" />
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 0</KeyFrame>
            <KeyFrame>0.3, 1</KeyFrame>
            <KeyFrame>0.8, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Set name="lifeTime">0.85</Set>
          <Random name="initialScale" min="0.3" max="0.8"/>
          <Random name="initialRotationRate" min="-180" max="180"/>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_damageGodRays" updateStage="OnDamagedTile">
        <Emitter>
          <Set name="lifeTime">0.3</Set>
          <Set name="emissionInterval">0.2</Set>
          <Set name="infParticles">true</Set>
          <Set name="particlesPerEmission">1</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_damageGodRays</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>0.5, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Curve name="initialScale">
            <KeyFrame>0, 0.75, 0.75</KeyFrame>
            <KeyFrame>0.5, 1.25, 1.25</KeyFrame>
            <KeyFrame>1, 1.25, 1.25</KeyFrame>
          </Curve>
          <Set name="lifeTime">1</Set>
          <Random name="initialAngle" min="0" max="360"/>
        </Particle>
      </ParticleSystem>
    </ParticleSystems>

    <RenderOptions>
      <Default>
        <Set name="PunchSoundOverride">HAND</Set>
        <Set name="PlayDefaultPunchAudio">false</Set>
        <Set name="IgnoreDefaultDamagedTileEffect">true</Set>
        <Set name="RenderBackArmInfected">false</Set>
        <Set name="RenderFrontArmInfected">true</Set>
        <Set name="RenderBackArmBuild">true</Set>
        <Set name="IncludeAllActions">true</Set>
        <Set name="DefaultRenderMannequinHandItem">false</Set>
        <Set name="IgnoreDefaultDamagedTileEffect">true</Set>
      </Default>
    </RenderOptions>
  </Data>

  <RenderRules>
    <RenderBackHandItem>
      <StopIf>
        <IsAction>BUILD</IsAction>
      </StopIf>
      <StopIf type="and">
        <IsZombified>true</IsZombified>
        <IsAction>PUNCH</IsAction>
      </StopIf>
      <SpriteRender name="s_backArm" offset="-3,-6" blend="PREMULTIPLIED_ALPHA" alignment="UPPER_CENTER" rotateOffset="true" rotationPoint="0,0"/>
    </RenderBackHandItem>
    <RenderHandItem>
      <SpriteRender name="s_frontArm" offset="-1,-1" blend="PREMULTIPLIED_ALPHA" alignment="UPPER_CENTER" rotateOffset="true" rotationPoint="0,0" />
    </RenderHandItem>
    <RenderFrontArm>
      <SpriteRender name="s_robe" alignment="DOWN_CENTER" useFixedRotation="true" fixedRotation="0"/>
    </RenderFrontArm>
    <OnPunchUpdate>
      <StopIf>
        <IsZombified>true</IsZombified>
        <IsItemTransformed>true</IsItemTransformed>
      </StopIf>
      <AvatarTransform class="Emotion">
        <Set name="emotion">SURPRISED</Set>
      </AvatarTransform>
      <AvatarTransform class="ArmAngle">
        <Set name="armName">arm1Angle</Set>
        <Set name="armAngle">220</Set>
      </AvatarTransform>
      <AvatarTransform class="ArmAngle">
        <Set name="armName">arm2Angle</Set>
        <Set name="armAngle">150</Set>
      </AvatarTransform>
    </OnPunchUpdate>
    <RenderTransform>
      <SpriteRender name="s_transform" blend="PREMULTIPLIED_ALPHA" offset="0,-8" />
    </RenderTransform>
  </RenderRules>
</ItemRenderer>