<?xml version="1.0"?>
<ItemRenderer>
  <Data>
    <Sprite name="s_handFront" fileName="game/player_cosmetics4.rttex" textureSize="32" frame="28,5" />
    <Sprite name="s_handBack" fileName="game/player_cosmetics4.rttex" textureSize="32" frame="29,5" />
    <Sprite name="s_transform" fileName="game/tf_page4.rttex" textureSize="64" frame="0,13" />
    <Sprite name="s_flash" fileName="game/tf_page4.rttex" textureSize="64" frame="7,14" />
    <Sprite name="s_flashImg" fileName="game/tf_page4.rttex" textureSize="64" frame="8,14" />
    <Sprite name="s_punch" fileName="game/particles12.rttex" textureSize="32" frame="26,14" />
    <Sprite name="s_hitShard" fileName="game/particles12.rttex" textureSize="32" frame="28,14" />
    <Sprite name="s_breakShard" fileName="game/particles12.rttex" textureSize="32" frame="30,14" />
    <Sprite name="s_break" fileName="game/particles12.rttex" textureSize="32" frame="27,14" />

    <StateMachines>
      <StateMachine name="Main">
        <States>
          <State name="Idle" />
          <State name="Walk" />
          <State name="Jump" />
          <State name="Fall" />
          <State name="PunchOnGround" />
          <State name="PunchInAir" />
        </States>
        <Transitions>
          <Transition to="Idle" from="Walk|Fall|PunchOnGround|Jump|PunchInAir">
            <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|PunchOnGround|PunchInAir|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|PunchInAir|PunchOnGround">
            <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|PunchInAir|PunchOnGround">
            <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="PunchOnGround" from="Idle|Walk|PunchInAir|Jump|Fall">
            <Condition type="and">
              <IsAction>PUNCH</IsAction>
              <IsVariableBool name="onGround">true</IsVariableBool>
            </Condition>
          </Transition>
          <Transition to="PunchInAir" from="Idle|Walk|Jump|Fall|PunchOnGround">
            <Condition type="and">
              <IsAction>PUNCH</IsAction>
              <IsVariableBool name="onGround">false</IsVariableBool>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
      <StateMachine name="IsTransformed">
        <States>
          <State name="No" />
          <State name="Transition" />
          <State name="Yes" />
        </States>
        <Transitions>
          <Transition to="Yes" from="Transition">
            <Condition>
              <IsItemTransformed>true</IsItemTransformed>
            </Condition>
          </Transition>
          <Transition to="No" from="Transition">
            <Condition>
              <IsItemTransformed>false</IsItemTransformed>
            </Condition>
          </Transition>
          <Transition to="Transition" from="No">
            <Condition>
              <IsItemTransformed>true</IsItemTransformed>
            </Condition>
          </Transition>
          <Transition to="Transition" from="Yes">
            <Condition>
              <IsItemTransformed>false</IsItemTransformed>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
    </StateMachines>
    <RenderOptions>
      <Default>
        <Set name="PunchSoundOverride">HAND</Set>
        <Set name="PlayDefaultPunchAudio">false</Set>
        <Set name="RenderBackArmInfected">true</Set>
        <Set name="RenderFrontArmInfected">true</Set>
        <Set name="RenderBackArmBuild">true</Set>
        <Set name="IncludeAllActions">true</Set>
        <Set name="DefaultRenderMannequinHandItem">false</Set>
      </Default>
      <Override overrideOnState="IsTransformed.Yes">
        <Set name="UserNameOffset">16</Set>
      </Override>
    </RenderOptions>
    <Animations>
      <SpriteAnimation name="a_idle" sprite="s_transform" animTime="800" isLoop="true" playOnState="Main.Idle">
        <Frame>0,13</Frame>
        <Frame>1,13</Frame>
        <Frame>2,13</Frame>
        <Frame>3,13</Frame>
        <Frame>4,13</Frame>
        <Frame>5,13</Frame>
        <Frame>6,13</Frame>
        <Frame>7,13</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_walk" sprite="s_transform" animTime="700" isLoop="true" playOnState="Main.Walk">
        <Frame>8,13</Frame>
        <Frame>9,13</Frame>
        <Frame>10,13</Frame>
        <Frame>11,13</Frame>
        <Frame>12,13</Frame>
        <Frame>13,13</Frame>
        <Frame>14,13</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_jump" sprite="s_transform" animTime="100" isLoop="true" playOnState="Main.Jump">
        <Frame>5,14</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_fall" sprite="s_transform" animTime="200" isLoop="true" playOnState="Main.Fall">
        <Frame>6,14</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_punch" sprite="s_transform" animTime="500" isLoop="true" playOnState="Main.PunchOnGround|Main.PunchInAir">
        <Frame>0,14</Frame>
        <Frame>1,14</Frame>
        <Frame>2,14</Frame>
        <Frame>3,14</Frame>
        <Frame>4,14</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_hitShards" sprite="s_hitShard">
        <Frame>28,14</Frame>
        <Frame>29,14</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_breakShards" sprite="s_breakShard">
        <Frame>30,14</Frame>
        <Frame>31,14</Frame>
      </SpriteAnimation>
    </Animations>
    <ParticleSystems>
      <ParticleSystem name="p_flash" updateStage="AddClothingParticles" updateState="IsTransformed.Transition">
        <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">1</Set>
          <Set name="particlesToEmit">1</Set>
        </Emitter>
        <Particle usePlayerFacing="true">
          <Set name="sprite">s_flash</Set>
          <Set name="blendingMode">ADDITIVE</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">1</Set>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="p_flashImg" updateStage="AddClothingParticles" updateState="IsTransformed.Transition">
        <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">1</Set>
          <Set name="particlesToEmit">1</Set>
        </Emitter>
        <Particle usePlayerFacing="true">
          <Set name="sprite">s_flashImg</Set>
          <Set name="blendingMode">ADDITIVE</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Curve name="initialScale">
            <KeyFrame>0, 1, 1</KeyFrame>
            <KeyFrame>1, 3, 3</KeyFrame>
          </Curve>
          <Set name="lifeTime">1</Set>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="p_flashShards" updateStage="AddClothingParticles" updateState="IsTransformed.Transition">
        <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">
          <Set name="sprite">s_hitShard</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="lifeTime">0.5</Set>
          <Set name="initialScale">0.5,0.5</Set>
          <RandomRadial name="initialVelocity" angleRange="0,360" radiusRange="120,170" />
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_punch">
        <Emitter attachment="targetPos">
          <Set name="emissionInterval">0.05</Set>
          <Set name="infParticles">true</Set>
          <Set name="infLifeTime">true</Set>
          <Set name="particlesPerEmission">2</Set>
          <Set name="particlesToEmit">1</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_punch</Set>
          <Random name="offset" min="-16,-16" max="16,16" />
          <Set name="blendingMode">ADDITIVE</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>0.5, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Random name="initialScale" min="0.5,0.75" max="0.5,1" />
          <Set name="lifeTime">0.2</Set>
          <Random name="initialAngle" min="0" max="360" />
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_hitShard" updateStage="OnDamagedTile">
        <Emitter>
          <Set name="lifeTime">0.25</Set>
          <Set name="particlesPerEmission">8</Set>
          <Set name="particlesToEmit">1</Set>
        </Emitter>
        <Particle randomSpriteFrame="true">
          <Set name="sprite">s_hitShard</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Set name="lifeTime">1</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Curve name="initialScale">
            <KeyFrame>0, 1,1</KeyFrame>
            <KeyFrame>1, 0.25,0.25</KeyFrame>
          </Curve>
          <Random name="initialRotationRate" min="5" max="15" />
          <Random name="offset" min="-4,-3" max="4,3" />
          <Set name="useGravity">true</Set>
          <Set name="gravityVector">0, 100</Set>
          <RandomRadial name="initialVelocity" angleRange="0,360" radiusRange="80,200" />
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_breakShard" updateStage="OnDestroyedTile">
        <Emitter>
          <Set name="lifeTime">0.25</Set>
          <Set name="particlesPerEmission">8</Set>
          <Set name="particlesToEmit">1</Set>
        </Emitter>
        <Particle randomSpriteFrame="true">
          <Set name="sprite">s_breakShard</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Set name="lifeTime">1</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Curve name="initialScale">
            <KeyFrame>0, 1,1</KeyFrame>
            <KeyFrame>1, 0.25,0.25</KeyFrame>
          </Curve>
          <Random name="initialRotationRate" min="5" max="15" />
          <Random name="offset" min="-4,-3" max="4,3" />
          <Set name="useGravity">true</Set>
          <Set name="gravityVector">0, 100</Set>
          <RandomRadial name="initialVelocity" angleRange="0,360" radiusRange="80,200" />
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_breakLogo" updateStage="OnDestroyedTile">
        <Emitter>
          <Set name="particlesPerEmission">1</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_break</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.5,1.5</KeyFrame>
          </Curve>
          <Set name="lifeTime">2</Set>
          <Random name="initialAngle" min="0" max="360"/>
        </Particle>
      </ParticleSystem>
    </ParticleSystems>
  </Data>
  <RenderRules>
    <AddClothingParticles>
      <ParticleSystemUpdate name="ps_punch" onState="Main.PunchOnGround|Main.PunchInAir"/>
    </AddClothingParticles>
    <OnPunchUpdate>
      <AvatarTransform class="Face">
        <Set name="face">MAD</Set>
      </AvatarTransform>
      <AvatarTransform class="ArmAngle">
        <Set name="armName">arm1Angle</Set>
        <Set name="animTime">300</Set>
        <Set name="Curve">
          <KeyFrame>0, 0</KeyFrame>
          <KeyFrame>1, 360</KeyFrame>
        </Set>
      </AvatarTransform>
      <AvatarTransform class="ArmAngle">
        <Set name="armName">arm2Angle</Set>
        <Set name="animTime">300</Set>
        <Set name="Curve">
          <KeyFrame>0, 180</KeyFrame>
          <KeyFrame>1, 540</KeyFrame>
        </Set>
      </AvatarTransform>
    </OnPunchUpdate>
    <OnRespawned>
      <ParticleSystemUpdate name="p_flashImg" />
      <ParticleSystemUpdate name="p_flash" />
      <ParticleSystemUpdate name="p_flashShards" />
    </OnRespawned>
    <RenderHandItem>
      <SpriteRender name="s_handFront" offset="0.3,16.3" rotateOffset="true" rotationPoint="0,1" blend="NORMAL" alignment="CENTER" drawShadow="true" />
    </RenderHandItem>
    <RenderBackHandItem>
      <StopIf>
        <IsAction>BUILD</IsAction>
      </StopIf>
      <StopIf type="and">
        <IsZombified>true</IsZombified>
        <IsAction>PUNCH</IsAction>
      </StopIf>
      <SpriteRender name="s_handBack" offset="-4.5,11.3" rotateOffset="true" rotationPoint="1,1" blend="NORMAL" alignment="CENTER" drawShadow="true" />
    </RenderBackHandItem>
    <RenderTransform>
      <SpriteRender name="s_transform" blend="PREMULTIPLIED_ALPHA" offset="0,-8" />
    </RenderTransform>
  </RenderRules>
</ItemRenderer>
